中文版
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
const config = {
host: 'host1,host2',
port: 'port1,port2',
name: 'name',
options: { 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.
const MongoDB = require('@brickyang/easy-mongodb').default;
const mongo = new MongoDB(config);
mongo
.connect()
.then(client => {
})
.catch(error => {
});
mongo.on('connect', () => {
});
mongo.on('error', error => {
});
const args = { doc, options };
mongo.insertOne('collection', args);
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.
License
MIT