如果嵌套数组不包含值,我需要找到所有匹配数组元素的计数,count = 0。 这是我的数据实体结构。
CustomData
如果用户搜索{
name:A,
issues:[1,2,3,4]
}
{
name:B,
issues:[1,2]
}
{
name:C,
issues:[3,4]
}
,我希望我的结果集看起来像
issues:[1,2]
我使用下面的查询来实现这一点,但它只返回结果
[{
name:A,
count:2
}
{
name:B,
count:2
}
{
name:C,
count:0
}]
我肯定知道因为我正在做的$匹配
[{
name:A,
count:2
}
{
name:B,
count:2
}]
答案 0 :(得分:1)
鉴于issues
变量是用户输入的数组,您不需要像上面那样使用三阶段聚合来获得结果。您只需要找到每个文档的用户输入和issues
字段的交集,然后获取结果数组的长度。这段代码将完成这项工作:
db.col.aggregate([{
$project: {
count: {
$size: {
$setIntersection: [issues, "$issues"]
}
}
}
}])