gpt4 book ai didi

mongodb - 根据条件进行分组和计数

转载 作者:行者123 更新时间:2023-12-02 00:17:05 27 4
gpt4 key购买 nike

我正在尝试对一组文档进行分组并根据它们的值对它们进行计数:

{ item: "abc1", value: 1 }
{ item: "abc1", value: 1 }
{ item: "abc1", value: 11 }
{ item: "xyz1", value: 2 }

我想按 item 进行分组,并返回 value 大于 10 的次数和次数小一倍:

{ item: "abc1", countSmaller: 2, countBigger: 1 }
{ item: "xyz1", countSmaller: 1, countBigger: 0 }

最佳答案

您需要的是$cond聚合框架的运算符。获得你想要的东西的一种方法是:

db.foo.aggregate([
{
$project: {
item: 1,
lessThan10: { // Set to 1 if value < 10
$cond: [ { $lt: ["$value", 10 ] }, 1, 0]
},
moreThan10: { // Set to 1 if value > 10
$cond: [ { $gt: [ "$value", 10 ] }, 1, 0]
}
}
},
{
$group: {
_id: "$item",
countSmaller: { $sum: "$lessThan10" },
countBigger: { $sum: "$moreThan10" }
}
}
])

注意:我假设value为数字而不是字符串。

输出:

{
"result" : [
{
"_id" : "xyz1",
"countSmaller" : 1,
"countBigger" : 0
},
{
"_id" : "abc1",
"countSmaller" : 2,
"countBigger" : 2
}
],
"ok" : 1
}

关于mongodb - 根据条件进行分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30169115/

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