mongo-mock 
This is an in-memory 'pretend' mongodb. The goal is to make the interface compatible with
the real mongodb module so they are interchangeable.
There are a TON of features for mongo and I can't write them all myself- so pull requests are encouraged!
My initial goal was to provide basic CRUD operations to enable this to work as a throw-something-together tool.
Why?
Maybe you don't want to (or can't) connect to a MongoDB instance for your tests?
Maybe you want to throw together a quick example app?
Demo code
var mongodb = require('mongo-mock');
mongodb.max_delay = 0;
var MongoClient = mongodb.MongoClient;
MongoClient.persist="mongo.js";
var url = 'mongodb://localhost:27017/myproject';
MongoClient.connect(url, {}, function(err, client) {
var db = client.db();
var collection = db.collection('documents');
var docs = [ {a : 1}, {a : 2}, {a : 3}];
collection.insertMany(docs, function(err, result) {
console.log('inserted',result);
collection.updateOne({ a : 2 }, { $set: { b : 1 } }, function(err, result) {
console.log('updated',result);
collection.findOne({a:2}, {b:1}, function(err, doc) {
console.log('foundOne', doc);
collection.removeOne({ a : 3 }, function(err, result) {
console.log('removed',result);
collection.find({}, {_id:-1}).toArray(function(err, docs) {
console.log('found',docs);
function cleanup(){
var state = collection.toJSON();
state.documents.push({a : 2});
state.documents.length = 0;
db.close();
}
setTimeout(cleanup, 1000);
});
});
});
});
});
});
Install
Well, you know.. the usual:
$ npm install mongo-mock