gpt4 book ai didi

MongoDB:引用集合中所有项目的总和

转载 作者:可可西里 更新时间:2023-11-01 09:50:34 25 4
gpt4 key购买 nike

我在获取所有帐户的余额时遇到了一些问题。所有账户在存款收集中都引用了不同的存款项目。

帐户收集:

[{
"_id": "56b1ce63315748b44f1174e1",
"name": "Foo bar",
"deposits": [
{
"$oid": "56b1ce78315748b44f1174e2"
}
]
}]

存款收集:

{
"_id": {
"$oid": "56b1deb84f40bfa435e22f3f"
},
"account": {
"$oid": "56b1dea34f40bfa435e22f3e"
},
"amount": 300,
"date": {
"$date": "2016-02-01T00:00:00.000Z"
}
}

我尝试聚合查询,但它总是返回余额:0。我想我需要在使用聚合之前填充该项目。但我该怎么做呢?

Accounts.aggregate([
{ $unwind: "$deposits" },
{
$group: {
_id: "$_id",
name: { "$first": "$name" },
balance: { $sum: "$deposits.amount" }
}
}])

解决方案:

{
$lookup:
{
from: 'deposits',
localField: 'amount',
foreignField: 'deposits',
as: 'deposits'
},
},
{ $unwind: "$deposits" },
{
$group: {
id: "$_id",
name: { "$first": "$name" },
balance: { $sum: "$deposits.amount" }
}
}

最佳答案

您需要使用 $lookup 运算符来连接两个集合,您当前的方法不起作用。 $lookup 运算符仅在 Mongo 3.2 及更高版本中可用。

{
$lookup:
{
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}
}

关于MongoDB:引用集合中所有项目的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175685/

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