gpt4 book ai didi

mongodb - 你能在 Mongo 聚合中伪造一个连接吗

转载 作者:IT老高 更新时间:2023-10-28 13:34:43 26 4
gpt4 key购买 nike

我有表格的文件

members:
{
_id:ObjectId("xxx"),
name:"John",
branch:ObjectId("yyy")
}

branches:
{
_id:ObjectId("yyy"),
name:"Branch A"
}

我想报告每个分支机构的人数。一个直接的 $group 管道可以做到这一点,但我只能让它报告分支 _id,然后在我的代码中转换它。我想做类似的事情:

db.members.aggregate(
{$group:{_id:db.branches.findOne(
{_id:"$branch"},
{name:1}).name,count:{$sum:1}}})

这似乎不起作用。这些方面有什么可行的方法吗?

最佳答案

您可以遍历聚合结果并查询名称。在 mongo shell 中,这看起来像:

db.members.aggregate(
{ $group: { _id: "$branch", count: { $sum: 1 } }
}).result.forEach(function(val, idx) {
var branch = db.branches.findOne( { _id: val._id.$id } );
val.name = branch.name;
printjson(val);
})

如果您使用语言驱动程序,请在结果中进行聚合和迭代,并对分支名称进行单独查询。这是一个很好的例子,为什么在 MongoDB 中也需要模式设计。我建议去规范化并将分支名称直接放入成员对象中。

关于mongodb - 你能在 Mongo 聚合中伪造一个连接吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802285/

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