gpt4 book ai didi

javascript - 如何使用 MongoDB 执行具有 `has many` 关联的查询

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:36 25 4
gpt4 key购买 nike

我使用 Node、Express 和 Backbone 络进行了设置。一切工作正常,我能够通过 MongoDB 集合检索记录,就像通过 id 或所有员工获取员工一样简单。我无法理解的是如何从 MongoDB 获取集合,这需要更复杂的查询语法,如下所示:

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

我目前使用以下语法来提取我想要公开为 json 对象的数据并绑定(bind)到我的 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);
});
});
};

我想要获取所有经理及其向他们汇报的员工的列表,然后以某种方式将此结果集绑定(bind)到各个 div,这些 div 会将经理列为列表标题,然后将向他们汇报的所有员工作为列表项目。结果集主要由 parent 和 child 组成。我想使用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 的聚合管道要求您在数组中传递操作。这意味着正确的查询是:

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/

关于javascript - 如何使用 MongoDB 执行具有 `has many` 关联的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com