[{
_id :"1",
value: 10
},
{
_id :"1",
value: 20
},
{
_id :"1",
value: 100
}...]
请教大家一个查询的问题,我想按照 value 的范围进行分组统计, 比如 0-50,返回的结果为
[ { "_id": "0_50", count: 2}, {"_id": "50_100": count: 1}]
类似这样, 不知是否可行
1
ch2 2021-05-17 18:01:26 +08:00
只能一项一项目来,像这样
``` collection.aggregate([{ "$project": { "50": { "$cond": { "if": {"$eq": [50, "$value"]}, "then": 1, "else": 0 } }, "100": { "$cond": { "if": {"$eq": [100, "$value"]}, "then": 1, "else": 0 } } } }, { "$group": { "_id": "$id", "50": { "$sum": "$50" }, "100": { "$sum": "$100" } } }]) ``` |
3
catinsides 2021-05-17 18:18:33 +08:00 1
把楼上的$eq 换成 $and: [{$gte: ['$value', 50], {$lte: ['$value', 100]}}]
|
4
EZVIK OP @catinsides 感谢 已经解决了。
|
5
EZVIK OP 解决方法 感谢楼上两位老哥
.aggregate([ { "$project": { "0_1000": { "$cond": { "if": { $and: [{$gte: ['$value', 0]}, { $lte: ['$value', 1000] } ] }, "then": 1, "else": 0 } } } }, { "$group": { "_id": "$id", "0_1000": { "$sum": "$0_10000 } } } ]) |