【发布时间】:2020-11-06 05:00:14
【问题描述】:
我的 mongoDB 文档如下所示:
[
{
"fields": {
"field_1": {
"name": "f1",
"first": {
"check": true
}
},
"field_2": {
"name": "f2",
"second": {
"check": true
}
},
"field_3": {},
"field_4": {
"name": "f4",
"second": {
"check": true
}
}
}
},
{
"fields": {
"field_1": {
"name": "f1",
"second": {
"check": false
}
},
"field_2": {
"name": "f2",
"second": {
"check": true
},
"first": {
"check": true
}
},
"field_3": {
"name": "f3",
"second": {
"check": true
}
}
}
}
]
预期输出:
-
创建父组 f1(
fields.field1.name) 和 f2(fields.field2.name) -
他们每个人都有两个子组,这些子组根据以下条件显示指标 各自的父组:
- first_group:
first.check=true的文档计数 - second_group:
first.check不存在且second.check=true的文档计数
- first_group:
结果:
[
{
"data": [
{
"_id": "f1",
"values": [
{
"second_group": 0,
"first_group": 1
}
]
},
{
"_id": "f2",
"values": [
{
"second_group": 1,
"first_group": 1
}
]
}
]
}
]
我已经使用 $facet 生成了查询,但我不满意,因为我必须在每个父组中重复我的子级分组逻辑(我在 $facet 中有 4 个数组)
My Query in Mongo Playground attached here
请告诉我如何删除重复查询。 有没有其他方法可以实现这个用例?
谢谢!
【问题讨论】:
-
基础预期 O/p 并查看条件使之成为 play query。看看这是否有帮助以及你在寻找什么。
-
虽然我需要 $facet 进行一些并行操作(我的实际用例更复杂),但这正是我想要的!非常感谢@ambianBeing
-
将其作为答案发布。考虑接受它。很高兴这有效。
标签: mongodb mongodb-query aggregation-framework grouping aggregation