[{ _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 ![]() 把楼上的$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 } } } ]) |