根据子数组元素的值计算行数

时间:2019-03-09 07:04:09

标签: mongodb mongodb-query aggregation-framework

我正在尝试将具有子数组元素值的行数视为true。

{
   _id: 1,
   name: 'test',
   items: [{'name': 'harry', valid: true}]
},
{
   _id: 2,
   name: 'walter',
   items: [{'name': 'potter', valid: false}]
},
{
   _id: 3,
   name: 'walter',
   items: [{'name': 'baby', valid: true}]
}

我需要使用聚合函数进行计数。 结果是

count 3, valid: 2, nonValid: 1

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

cond

您只需要一个$group管道和$sum累加器。 “ {counting arrays”是通过$size的匹配元素中的$filter完成的,其中valid需要一个布尔表达式。

由于数组项中的true已经是布尔值,所以返回值必须是valid作为true计数,或者返回$not nonValid是{{1}}