如何使用MongoDB执行一个具有多个关联的查询

我有一个使用Node,Express和使用主干的设置。 一切工作正常,我能够从MongoDB集合检索logging,当他们是简单的,如通过ID或所有员工获得员工。 我遇到困难的是如何从MongoDB获取需要更复杂查询语法的集合,如下所示:

db.employees.aggregate( [ { $group : { _id : "$managerName", employees: { $push: "$fullName" } } } ] ) 

我目前有以下语法来提取我想要作为JSON对象公开的数据,并绑定到我的HTML页面中的元素。

 exports.findById = function(req, res) { var id = parseInt(req.params.id); db.collection('employees', function(err, collection) { collection.findOne({'id': id}, function(err, item) { res.jsonp(item); }); }); }; 

我想获得所有经理和他们的员工列表,他们报告给他们,然后以某种方式将此结果集绑定到单独的div,将列出一个pipe理器作为列表标题,然后所有员工报告给他们作为列表项目。 结果集基本上由父母和孩子组成。 我想要dynamic使用backbonejs。

我会做类似的事吗?

 exports.findRelations = function(req, res) { db.collection('employees', function(err, collection) { collection.aggregate({ $group : { _id : "$managerName", employees:{$push: "$fullName" } } }, function(err, item) { res.jsonp(item); }); }); }; 

MongoDB的聚合pipe道要求您在Array中传递操作。 这意味着正确的查询将是:

 db.collection('employees').aggregate([ { $group : { _id : "$managerName", employees:{$push: "$fullName" } } ]) .toArray(function(err, managers){ if (err){ throw err; } res.jsonp(managers); }); 

您可以在这里find使用带有NodeJS MongoDB驱动程序的聚合pipe道的详细信息: https : //docs.mongodb.org/getting-started/node/aggregation/