【发布时间】:2022-01-08 09:45:05
【问题描述】:
给定一个文档集合,每个文档都包含一个子文档数组(以及其他属性):
{
"prop1": False,
"prop2": "unique_value",
"subdocuments": [
{
"subprop1": 1,
"subprop2": 10
},
{
"subprop1": 30,
"subprop2": 40
},
{
"subprop1": 10,
"subprop2": 1
}
]
}
还有一个涵盖文档和子文档的 $match 查询:
{
"prop1": False,
"$or": [
{"subdocuments.subprop1": {"$lt": 3}},
{"subdocuments.subprop2": {"$lt": 5}}
]
}
如何创建一个聚合查询,返回匹配子文档和匹配文档的数量,按根文档的特定属性分组?
仅计算子文档总数和匹配文档很简单,但我也很难获得匹配子文档的正确计数。
理想情况下,我希望得到这样的结果(如果我们考虑示例文档,只有 subdoc 1 和 3 匹配 $or 条件):
{
"unique_value": {
"documents": 1,
"subdocuments": 2
}
}
在这种情况下,结果按“prop2”的值分组。
【问题讨论】:
标签: mongodb mongodb-query