moko-mongo
v0.1.0
Published
mongo adapter for moko
Downloads
4
Maintainers
Readme
moko-mongo
mongo adapter for moko.
Installation
npm install moko-mongo
Usage Example
var mongo = require('moko-mongo');
db = yield mongo('mongodb://localhost:27017/test') // opens a connection
User.use(db);
var bob = yield new User({name: 'Bob'});
yield bob.save();
console.log(bob._id);
Configuration
moko-mongo
will use Model.modelName
for the collection. For example:
var mongo = yield require('moko-mongo')(connectString);
var User = moko('User').attr('_id').attr('name');
User.use(mongo) // uses 'User' for collection
If you would like to specify a different collection name, you can do so by passing it as an argument to the plugin.
User.use(mongo('People'));
Full Documentation
Model.db
Raw Kongo collection that you can work with directly.
Model.all(query, [options])
Queries for all models in the collection given the query. Additional options can be passed in.
Returns an array of instances that match, or an empty array if nothing matched.
var confirmedUsers = yield User.all({confirmed: true}, { sort: {confirmedAt: -1}, limit: 10});
Model.find/get(query, [options])
Queries for a specific model in the collection. Returns the first instance to match the query. Additional options can be passed in.
Also supports taking a String
for the query for the _id
.
If no documents match, returns false.
var user = yield User.get('536b8b39e7449b020000000b'); // Look up via string
user = yield User.get({_id: '536b8b39e7449b020000000b'}); // Look up via string
user = yield User.get({age: 30}, {sort: {createdAt: -1}}); // Look up via string
Model.removeAll(query, [options])
Removes all documents that match the query. Returns the number of documents removed
var removed = yield User.removeAll({deleted: true});
console.log("%d user accounts were removed", removed);
Model.index(fields, [options])
Alias to Model.db.ensureIndex
. Lets you make indexes!
Model.query()
Returns a wrapped instances of mquery
. See mquery support below.
Model.aggregate(bool)
Returns a wrapped instances of maggregate
. See maggregate support below.
Optionally, if don't want it to return Model
instances, you can use Model.aggregate(true)
to skip wrapping the instances.
mquery support
moko-mongo
provides a wrapped version of the wonderful mquery
query builder. To get it, simply call Model.query()
.
This allows you to build readable and robust queries easily. When approprirate,
modella-mongo will return instances of modella
models, instead of just
documents. Aside from that, it follows the mquery
API completely.
Example with mquery
var bob = yield User.query().findOne().where({username: 'Bob'})
maggregate support
moko-mongo
uses the maggregate
aggregation builder. To use it, simply call Model.aggregate()
.
This allows you to build readable aggregations easily. By default it wraps
responses in Model
instances, but can be disabled by passing skipWrap
as
true
. It also follows the maggregate
api completely.
Example with maggregate
var skipWrapping = true;
locations = yield User.aggregate(skipWrapping)
.group({_id: '$location', userCount: {$sum: 1}});
locations.forEach(function(location) {
console.log("%s has %d users", location._id, userCount);
});