gpt4 book ai didi

mongodb - 如何计算Mongodb聚合中的字段

转载 作者:可可西里 更新时间:2023-11-01 10:22:02 25 4
gpt4 key购买 nike

我有一个包含这样条目的文档

{ 
"_id": ObjectId("5644c495d0807a1750043237"),
"siteid": "123456"
"amount": 1.32
}

有些文件有其他金额,例如。“cashbackAmount”

我想要每个金额字段的 sumcount。并非每个文档都包含所有金额字段。

我已经尝试了以下方法

{
$group: {
"_id": "$siteid",
item2: { "$sum": "$amount" },
item3: { "$sum": "$totalAmount" },
item4: { "$sum": "$cashbackAmount" },
item5: { "$sum": "$unitPrice" },
}
}

它给了我总和,但我不知道如何得到每个金额字段出现的次数。

{ "$sum": 1 } 不起作用,因为它为我提供了具有任何一个总计字段的所有文档。

最佳答案

我猜你可能想要这样的东西

db.getCollection('amounts').aggregate([
{
$project: {
siteid: 1,
amount: 1,
totalAmount: 1,
unitPrice: 1,
cashbackAmount: 1,
amountPresent: {
$cond: {
if: "$amount",
then: 1,
else: 0
}
},
totalAmountPresent: {
$cond: {
if: "$totalAmount",
then: 1,
else: 0
}
},
cashbackAmountPresent: {
$cond: {
if: "$cashbackAmount",
then: 1,
else: 0
}
},
unitPricePresent: {
$cond: {
if: "$unitPrice",
then: 1,
else: 0
}
}
}
},
{
$group: {
"_id": "$siteid",
amountSum: { "$sum": "$amount" },
amountCount: { "$sum": "$amountPresent" },
totalAmountSum: { "$sum": "$totalAmount" },
totalAmountCount: { "$sum": "$totalAmountPresent" },
cashbackAmountSum: { "$sum": "$cashbackAmount" },
cashbackAmountCount: { "$sum": "$cashbackAmountPresent" },
unitPriceSum: { "$sum": "$unitPrice" },
unitPriceCount: { "$sum": "$unitPricePresent" }
}
}
])

关于mongodb - 如何计算Mongodb聚合中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011432/

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