如何使用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/
- 骨干model.save()不使用body parser设置express服务器的响应主体
- 简单的骨干应用程序通过错误
- Node.js – 未定义:0语法错误:意外的input结束
- 哪个数据库适合我的应用程序mysql或mongodb? 使用Node.js,Backbone,Now.js
- 单页面应用的版本和路由?
- Express.js性能问题
- Access-Control-Allow-Origin不允许来源http:// localhost
- 将依赖外部库的UMD模块与browserify捆绑在一起
- eonasdan-bootstrap-datetimepicker v4.17.37小部件不使用common.js加载