如何使用聚合框架计算MongoDB中的布尔值
文档存储在以下字段中:如何使用聚合框架计算MongoDB中的布尔值,mongodb,aggregation-framework,Mongodb,Aggregation Framework,文档存储在以下字段中: _id: NumberofChildren: Integer OwnsAHome: Boolean Income: Integer 我需要使用聚合框架按子项的数量进行排序,因此输出如下: Number of Children: 3 Number of People: some value, say 17 Number of People who own a home: some value less than 17 which is a sum of the numbe
_id:
NumberofChildren: Integer
OwnsAHome: Boolean
Income: Integer
我需要使用聚合框架按子项的数量进行排序,因此输出如下:
Number of Children: 3
Number of People: some value, say 17
Number of People who own a home: some value less than 17 which is a sum of the number of true Booleans
Average income: some value
在使用聚合的MongoDB中,我将如何做到这一点,特别是在计算布尔值OwnsAHome
为true
的次数方面
谢谢 通过允许您创建与原始字段具有不同类型和值的新字段,
$project
阶段是您在管道中的朋友
考虑这个投影,它使用$cond
在某个值为真时使用一个值,在该值为假时使用另一个值:
{$project:{numWhoOwnHome:{$cond:[“$OwnsAHome”,1,0]}}
如果您现在使用
{$sum:$numwhownhome}
执行$group
,您的结果将是拥有家庭的人数设置为true。我使用@eri建议
鉴于数据:
campaign | flags.click | flags.removed
c1 | true | false
c1 | true | true
c2 | false | false
与:
我将获得输出:
campaign | countClick | countRemoved
c1 | 2 | 1
c2 | 0 | 0
不要忘记为每个要包含“fieldName:1”的字段添加到$project,否则$project产生的唯一内容将是_id字段和这个新的计算字段。
{'$group':{….{count:{$sum:{$cond:[“$closed”,1,0]}}
$cond从3.2版开始在$group中工作。这应该被标记为答案。没有必要像2013年的答案中建议的那样增加一个投影阶段。@Manuel Spigolon您做得很好。
campaign | countClick | countRemoved
c1 | 2 | 1
c2 | 0 | 0