我正在尝试将一组文档分组,并根据它们的价值进行计数:
{ 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 }
4条答案
按热度按时间1dkrff031#
您需要的是聚合框架的
$cond
运算符,获得所需内容的一种方法是:**注意:**我假设
value
为数字而不是字符串。输出:
qzwqbdag2#
你需要使用**
$cond
**运算符。这里0
是小于10
的值,1
是大于10
的值。这并没有给予你期望的输出。也许有人会给出更好的答案。输出:
您需要将值convert为
integer
或float
4urapxun3#
如果有人正在寻找此场景的Java代码(根据我的需要更新字段):
s3fp2yjn4#
要根据$group阶段中的条件计算数据,我们可以使用MongoDb版本5.0中更改的“$accumulator”运算符
因此,根据您的要求,我们可以使用此聚合阶段实施-
此执行将产生以下结果
有关载物台和运算符的详细信息,请参阅以下链接
https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/
希望这对你或别人有帮助。谢谢!
快乐编码:-)