Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用聚合框架计算MongoDB中的布尔值_Mongodb_Aggregation Framework - Fatal编程技术网

如何使用聚合框架计算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