我有Node,Express和使用骨干网的设置。一切正常,我可以通过MongoDB集合检索记录,因为它们很简单,就像通过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);
});
});
};
我希望获得所有经理及其员工报告给他们的列表,然后以某种方式将此结果集绑定到将Manager列为List标题的各个div,然后将所有员工作为列表报告给他们项目。结果集基本上由父母和孩子组成。我想用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);
});
});
};
答案 0 :(得分:0)
MongoDB的聚合管道要求您传递Array中的操作。这意味着正确的查询将是:
db.collection('employees').aggregate([
{ $group : { _id : "$managerName", employees:{$push: "$fullName" } }
])
.toArray(function(err, managers){
if (err){
throw err;
}
res.jsonp(managers);
});
您可以在此处找到有关使用NodeJS MongoDB驱动程序的汇总管道的详细信息:https://docs.mongodb.org/getting-started/node/aggregation/