对于那些试图在 3.6 上找出完整示例的人来说,这对我有用:
function aggregateLoad(db, collectionName, lookUpOption, matchOption, callback) {
var defCursor = {};
var cursor = db.collection(collectionName).aggregate([
{
$lookup: lookUpOption
},
{
$match: matchOption
}
],defCursor,null);
cursor.toArray(function(err, docs) {
console.log("Some data: ", docs);
callback(err, docs);
db.close();
});
}
那么你可以调用上面的函数:
function testAggregateLoad(someId, callback) {
var match = {
"localId": someId
};
var aggregateQuery = {
from: "someSecondCollectionName",
localField: "localId",
foreignField: "_id",
as: "someData"
};
getConnection(conCallBackEx);
function conCallBackEx(db) {
aggregateLoad(db, "someBaseLoadCollection", aggregateQuery, match, onSuccess);
}
function onSuccess(err, json) {
console.log('Loaded data is ', json);
callback(json);
}
}
function getConnection(callback) {
var MongoClient = require('mongodb').MongoClient;
return MongoClient.connect(url, function (err, db) {
if (null === err) {
callback(db, err);
} else {
console.log("failed to get db connection retrying " + err);
getConnection(callback);
}
});
}