Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

williamkapke/mongo-mock

Repository files navigation

mongo-mock Build Status

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;//you can choose to NOT pretend to be async (default is 400ms)
var MongoClient = mongodb.MongoClient;
MongoClient.persist="mongo.js";//persist the data to disk
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, {}, function(err, client) {
 var db = client.db();
 // Get the documents collection
 var collection = db.collection('documents');
 // Insert some 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();
 // Do whatever you want. It's just an Array of Objects.
 state.documents.push({a : 2});
 
 // truncate
 state.documents.length = 0;
 
 // closing connection
 db.close();
 }
 
 setTimeout(cleanup, 1000);
 });
 });
 });
 });
 });
});

Install

Well, you know.. the usual:

$ npm install mongo-mock

About

Let's pretend we have a real MongoDB

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 25

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /