egg-mongo-native
egg-mongo-native copied to clipboard
MongoDB egg.js plugin using native driver.
Users who don't use Egg.js could use easy-mongodb.
This plugin 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 plugin
app.mongo.find('name', { query, skip, limit, project, sort, options });
Install
$ npm i egg-mongo-native --save
Enable Plugin
// {app_root}/config/plugin.js
exports.mongo = {
enable: true,
package: 'egg-mongo-native',
};
Configuration
Single Instance
// {app_root}/config/config.default.js
exports.mongo = {
client: {
host: 'host',
port: 'port',
name: 'test',
user: 'user',
password: 'password',
options: {},
},
};
Replica Set (v2.1.0 or higher)
// mongodb://host1:port1,host2:port2/name?replicaSet=test
exports.mongo = {
client: {
host: 'host1,host2',
port: 'port1,port2',
name: 'name',
options: {
replicaSet: 'test',
},
},
};
// mongodb://host:port1,host:port2/name?replicaSet=test
exports.mongo = {
client: {
host: 'host', // or ['host']
port: 'port1,port2', // or ['port1', 'port2']
name: 'name',
options: {
replicaSet: 'test',
},
},
};
Multiple Instances
Can not set
client
andclients
both.
// {app_root}/config/config.default.js
exports.mongo = {
clients: {
db1: {
host: 'host',
port: 'port',
name: 'db1',
user: 'user',
password: 'password',
options: {},
},
db2: {
host: 'host',
port: 'port',
name: 'db2',
user: 'user',
password: 'password',
options: {},
},
},
};
see config/config.default.js for more detail.
Example
The APIs provided by plugin usually need two arguments. The first is commonly the collection name, and the second is an object keeps the arguments of official API. For example, to insert one document using official API
db.collection('name').insertOne(doc, options);
and using plugin API
const args = { doc, options };
app.mongo.insertOne('name', args);
For Multiple Instances
const args = { doc, options };
app.mongo.get('db1').insertOne('name', args);
The args
is an object provides the arguments to official API.
Please read easy-mongodb for all APIs(tansaction is now supported) and more examples.
License
MIT