Native MongoDB API with promises just to make you happy.
var MongoNative = require('mongo-native');
MongoNative.connect('mongodb://localhost/native-db').then(function (db) {
var users = db.collection('users');
users.insertMany([{name: 'kris kowal'}, {name: 'tj'}, {name: 'douglas crockford'}]).then(function (docs) {
assert.equal('kris kowal', docs[0].name);
});
});
db.collection('users', function (err, users) {
if(err) {
throw err;
}
users.insertOne({name: 'addy osmani'}).then(function (user) {
assert.equal('addy osmani', user.name);
});
});
var Db = require('mongo-native').Db;
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
MongoClient.connect('mongodb://localhost/mydb', function (err, db) {
if(err) {
throw err;
}
global.db = new Db(db);
});
app.listen(3000, function () {
console.log('Everything is cool now');
});
var docs = [{
title : "this is my title", author : "bob", posted : new Date() ,
pageViews : 5, tags : [ "fun" , "good" , "fun" ], other : { foo : 5 },
comments : [
{ author :"joe", text : "this is cool" }, { author :"sam", text : "this is bad" }
]}];
var collection = db.collection('aggregationExample1');
collection.deleteMany({}, {w:1}).then(function () {
return collection.insertMany(docs, {w: 1});
}).then(function(result) {
var promise = collection.aggregate([
{ $project : {
author : 1,
tags : 1
}},
{ $unwind : "$tags" },
{ $group : {
_id : {tags : "$tags"},
authors : { $addToSet : "$author" }
}}
]);
return promise;
}).then(function(result) {
res.json(result);
}, function (err) {
console.log(err);
res.status(400).end();
});
MongoNative.connect('mongodb://localhost/mydb').then(function (db) {
var users = db.collection('users');
return users.find();
}).then(function (users) {
assert.equal(300000, users.length);
});