gracenode-mongodb
v0.4.3
Published
mongodb module for gracenode framework.
Downloads
3
Maintainers
Readme
MongoDB Module
MongoDB module for gracenode framework
This is designed to function within gracenode framework.
How to include it in my project
To add this package as your gracenode module, add the following to your package.json:
"dependencies": {
"gracenode": "",
"gracenode-mongodb": ""
}
To use this module in your application, add the following to your gracenode bootstrap code:
var gracenode = require('gracenode');
// this tells gracenode to load the module
gracenode.use('gracenode-mongodb');
To access the module:
// the prefix gracenode- will be removed automatically
gracenode.mongodb
Access
Configurations
"modules": {
"gracenode-mongodb": {
"configNameOfYourChoice": {
"host": "host name or IP address" or an array of hosts,
"port": <port number> or an array of ports,
"database": "database name",
"poolSize": <optional>,
"user": <optional>,
"password": <optional>,
"replicaSet": <optional>,
"readPreference": "<optional>"
}{...}
}
}
.create(configName [string])
Returns an instance of Db class
Db class
.collection(collectionName [string])
Returns an instance of Collection class
.collectionNames(callback [function])
Returns a list of all collection names in a database.
.collections(callback [function])
Returns detailed collection metadata in a database.
.drop(collectionName [string], callback [function])
Drops an entire collection.
Collection class
.stream(query [object], fields [array], options [object])
This is very useful when reading a very large data set
var myDb = gracenode.mongodb.create('myDb');
var myCol = myDb.collection('myCol');
var stream = myCol.stream({ age: { $gte: 20 } }, ['_id', 'name', 'age'], { limit: 100 });
stream.on('data', function (data) {
// read one record at a time up to limit (100)
});
stream.on('error', function (error) {
// error
});
stream.on('close', function () {
// all done
});
.findOne(query [object], fields [array], callback [function])
var myDb = gracenode.mongodb.create('myDb');
var myCol = myDb.collection('myCol');
myCol.findOne({ _id: 123456 }, ['_id', 'name'], function (error, doc) {
// do something
});
.findMany(query [object], feilds [array], pagenate [object], callback [function])
pagenate:
{
limit: <int>
offset: <int>
sort: <object>
toArray: <boolean>
}
NOTE: If toArray
in pagenate
is true
, it will use .toArray()
to read the data.
var myDb = gracenode.mongodb.create('myDb');
var myCol = myDb.collection('myCol');
// query upto 10 documents and offset from 5th record matched. Plus sort the records by 'age'
myCol.findMany({ _id: 123456 }, ['_id', 'name'], { limit: 10, offset: 5, sort: { age: -1 } }, function (error, doc) {
// do something
});
.findEach(query [object], fields [array], limit [integer], sort [*object], eachCallback [function], finalCallback [function])
Executes findMany with the given limit and auto-iterate until it finds no more record. Each iteration will call eachCallback.
When it reaches the end, it will call finalCallback.
This operation can be very expensive.
Example:
var myDb = gracenode.mongodb.create('myDb');
var myCol = gracenode.mongodb.collection('myCol');
myCol.findEach({ _id: /name/ }, ['age'], { sort: { age: -1 } }, function (list, next) {
// do something with list
next();
},
function (error) {
// done
});
.ensureIndex(indexes [object], options [object], callback [function])
.insert(values [object], callback [function])
.update(conditions [object], updates [object], callback [function])
NOTE: safe and multi are always true and upsert is false)
.upsert(conditions [object], updates [object], multi [boolean], callback [function])
.increment(conditions [object], propertyName [string], incrementBy [number], maxNumAllowed [number], callback [function])
Does NOT allow the target property to exceed maximum number given
.decrement(conditions [object], propertyName [string], decrementBy [number], callback [function])
Does NOT allow the target property to fall below 0
.save(values [object], callback [function])
.delete(values [object], callback [function])
.findAndModify(query [object], sort [object], update [object], options [object], callback [function])
.count(object query, callback [function])
var mongo = gracenode.mongodb.create('mongoDatabase').collection('cookieJar');
mongo.count({ type: 'cookies' }, function (error, count) {
console.log('There are', count, 'cookies in the jar');
});
.mapReduce(map [function], reduce [function], options [object], callback [function])
MongoDB Map Reduce Example