mongojs
A node.js module for mongodb, that emulates the official mongodb API as much as possible. It wraps mongodb-native.
It is available through npm:
npm install mongojs
Usage
mongojs is very simple to use:
var mongojs = require('mongojs');
var db = mongojs(connectionString, [collections]);
The connection string should follow the format desribed in the mongo connection string docs.
Some examples of this could be:
var db = mongojs('mydb', ['mycollection']);
var db = mongojs('example.com/mydb', ['mycollection']);
var db = mongojs('username:password@example.com/mydb', ['mycollection']);
var db = mongojs('mydb');
var mycollection = db.collection('mycollection');
After we connected we can query or update the database just how we would using the mongo API with the exception that we use a callback
The format for callbacks is always callback(error, value)
where error is null if no exception has occured.
db.mycollection.find(function(err, docs) {
});
db.mycollection.find().sort({name:1}, function(err, docs) {
});
db.mycollection.find({level:{$gt:90}}).forEach(function(err, doc) {
if (!doc) {
return;
}
});
db.mycollection.update({name:'mathias'}, {$inc:{level:1}}, {multi:true}, function(err) {
});
db.mycollection.findAndModify({
query: { name: 'mathias' },
update: { $set: { tag:'maintainer' } },
new: true
}, function(err, doc) {
});
db.mycollection.save({created:'just now'});
If you provide a callback to find
or any cursor config operation mongojs will call toArray
for you
db.mycollection.find({}, function(err, docs) { ... });
db.mycollection.find({}).limit(2).skip(1, function(err, docs) { ... });
is the same as
db.mycollection.find({}).toArray(function(err, docs) { ... });
db.mycollection.find({}).limit(2).skip(1).toArray(function(err, docs) { ... });
For more detailed information about the different usages of update and quering see the mongo docs
Streaming cursors
As of 0.7.0
all cursors are a readable stream of objects.
var JSONStream = require('JSONStream');
db.mycollection.find({}).pipe(JSONStream.stringify()).pipe(process.stdout);
Notice that you should pipe the cursor through a stringifier (like JSONStream)
if you want to pipe it to a serial stream like a http response.
Tailable cursors
If you are using a capped collection you can create a tailable cursor to that collection by adding tailable:true
to the find options
var cursor = db.mycollection.find({}, {}, {tailable:true, timeout:false});
cursor.on('data', function(doc) {
console.log('new document', doc);
});
Note that you need to explicitly set the selection parameter in the find
call.
Replication Sets
Mongojs can also connect to a mongo replication set by providing a connection string with multiple hosts
var db = mongojs('rs-1.com,rs-2.com,rs-3.com/mydb?slaveOk=true', ['mycollection']);
For more detailed information about replica sets see the mongo replication docs
License
MIT