MongoDB egg.js plugin using native driver.
npm install egg-mongo-native[![NPM version][npm-image]][npm-url]
[![NPM quality][quality-image]][quality-url]
[![build status][travis-image]][travis-url]
[![Test coverage][codecov-image]][codecov-url]
[![David deps][david-image]][david-url]
[![Known Vulnerabilities][snyk-image]][snyk-url]
[![npm download][download-image]][download-url]
[npm-image]: https://img.shields.io/npm/v/egg-mongo-native.svg?style=flat-square
[npm-url]: https://npmjs.org/package/egg-mongo-native
[quality-image]: http://npm.packagequality.com/shield/egg-mongo-native.svg?style=flat-square
[quality-url]: http://packagequality.com/#?package=egg-mongo-native
[travis-image]: https://img.shields.io/travis/brickyang/egg-mongo-native.svg?branch=master&style=flat-square
[travis-url]: https://travis-ci.org/brickyang/egg-mongo-native
[codecov-image]: https://img.shields.io/codecov/c/github/brickyang/egg-mongo-native.svg?style=flat-square
[codecov-url]: https://codecov.io/github/brickyang/egg-mongo-native?branch=master
[david-image]: https://img.shields.io/david/brickyang/egg-mongo-native.svg?branch=master&style=flat-square
[david-url]: https://david-dm.org/brickyang/egg-mongo-native?branch=master
[snyk-image]: https://snyk.io/test/npm/egg-mongo-native/badge.svg?style=flat-square
[snyk-url]: https://snyk.io/test/npm/egg-mongo-native
[download-image]: https://img.shields.io/npm/dm/egg-mongo-native.svg?style=flat-square
[download-url]: https://npmjs.org/package/egg-mongo-native
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
``js`
db.collection('name')
.find(query, options)
.skip(skip)
.limit(limit)
.project(project)
.sort(sort)
.toArray();
and with this plugin
`js`
app.mongo.find('name', { query, skip, limit, project, sort, options });
`bash`
$ npm i egg-mongo-native --save
`js`
// {app_root}/config/plugin.js
exports.mongo = {
enable: true,
package: 'egg-mongo-native',
};
`js`
// {app_root}/config/config.default.js
exports.mongo = {
client: {
host: 'host',
port: 'port',
name: 'test',
user: 'user',
password: 'password',
options: {},
},
};
`js
// 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',
},
},
};
`
> Can not set client and clients both.
`js`
// {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.
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
`js`
db.collection('name').insertOne(doc, options);
and using plugin API
`js`
const args = { doc, options };
app.mongo.insertOne('name', args);
For Multiple Instances
`js`
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.