@brickyang/easy-mongodb
v2.0.1
Published
Based on MongoDB Native Node.js Driver.
Downloads
564
Readme
This lib base on node-mongodb-native, provides the official MongoDB native driver and APIs.
It wraps some frequently-used API to make it easy to use but keep all properties as it is. For example, to find a document you need this with official API
db.collection('name')
.find(query, options)
.skip(skip)
.limit(limit)
.project(project)
.sort(sort)
.toArray();
and with this lib
mongo.find('name', { query, skip, limit, project, sort, options });
If you are using Egg.js, please see egg-mongo-native.
Installation
npm install --save @brickyang/easy-mongodb
Configuration
Single
const config = {
host: 'host',
port: 'port',
name: 'test',
user: 'user',
password: 'password',
options: {},
};
Replica Set
// mongodb://host1:port1,host2:port2/name?replicaSet=test
const config = {
host: 'host1,host2',
port: 'port1,port2',
name: 'name',
options: { replicaSet: 'test' },
};
// mongodb://host:port1,host:port2/name?replicaSet=test
const config = {
host: 'host',
port: 'port1,port2',
name: 'name',
options: { replicaSet: 'test' },
};
Usage
The APIs provided by this lib usually need two arguments. The first is commonly the collection name, and the second is an object keeps the arguments of official API.
// TypeScript
// import MongoDB from '@brickyang/easy-mongodb';
const MongoDB = require('@brickyang/easy-mongodb').default;
const mongo = new MongoDB(config);
// connection
mongo
.connect()
.then(client => {
// `client` is instance of connected MongoClient
})
.catch(error => {
// handle error
});
// or
mongo.on('connect', () => {
// do something
});
mongo.on('error', error => {
// handle error
});
// insert one doc
const args = { doc, options };
mongo.insertOne('collection', args);
// transaction
const session = mongo.startTransaction();
const args = { doc, { session } };
mongo.insertOne('collection1', args);
mongo.insertOne('collection2', args);
session.commitTransaction();
Members
- db: Db instance
- client: MongoClient instance
- featureCompatibilityVersion: Transaction need '4.0' or above
API
Until now, this plugin provides these functions:
- connect
- insertOne
- insertMany
- findOne
- findOneAndUpdate
- findOneAndReplace
- findOneAndDelete
- updateMany
- deleteMany
- find
- count: 已过时
- countDocuments
- estimatedDocumentCount
- distinct
- createIndex
- listCollection
- createCollection
- aggregate
- startSession
- startTransaction
You can always use mongo.db
and mongo.client
to use all official APIs. Check the
APIs here:
Node.js MongoDB Driver API.
Promise
function create(doc) {
mongo
.insertOne('name', { doc })
.then(result => console.log(result))
.catch(error => console.error(error));
}
Async/Await
async function create(doc) {
try {
const result = await mongo.insertOne('name', { doc });
console.log(result);
} catch (error) {
console.error(error);
}
}
If you use mongo.db
you could use callback(usually the last argument), but
this lib doesn't support callback because Promise and async/await are better.