gpt4 book ai didi

Node.js MongoDb 聚合 Sum all 和 Sum all with certain field

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:59 24 4
gpt4 key购买 nike

这是我的收藏[测试]。

{"_id" : "Test1", "enabled": "on", "value" : 10},
{"_id" : "Test2", "enabled": "on", "value" : 50},
{"_id" : "Test3", "enabled": "on", "value" : 10},
{"_id" : "Test4", "value" : 5},
{"_id" : "Test5", "value" : 2}

我想使用 "enabled":"on" 获取该字段的所有总值(value)和总值(value),如下所示:

期望的结果:

[ { _id: 空, 总值(value):77, 启用总数:70}]

这是我到目前为止所拥有的,但没有运气。

db.collection('test').aggregate({
$group: {
_id: null,
totalValue : {
$sum: "$value"
},
totalEnabled: $sum : {"enabled":{$exists:true}}
}
}, function(err, result) {
if (err) return console.dir(err)

console.log(result);
});

最佳答案

你很接近但是$exists不起作用的是聚合并且具有不同的功能。您正在寻找的是 $cond

db.items.aggregate([
{$group: {
_id: null,
totalValue: {$sum: "$value"},
enabledValue: {$sum: {
$cond: [
// Condition to test
{$eq: ["$enabled", "on"] },
// True
"$value",
// False
0
]
}}
}}
])

用法是根据条件评估为true还是false来提供不同的值。

关于Node.js MongoDb 聚合 Sum all 和 Sum all with certain field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21930391/

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