【发布时间】:2021-06-17 13:33:31
【问题描述】:
我有一些我们这样的收藏:
[{
"_id": ObjectId("604f3ae3194f2135b0ade569"),
"parameters": [
{
"_id": ObjectId("602b7455f4b4bf5b41662ec1"),
"name": "Purpose",
"options": [
{
"id": ObjectId("602b764ff4b4bf5b41662ec2"),
"name": "debug",
"sel": false
},
{
"id": ObjectId("602b767df4b4bf5b41662ec3"),
"name": "performance",
"sel": false
},
{
"id": ObjectId("602b764ff4b4bf5b41662ec4"),
"name": "security",
"sel": false
},
{
"id": ObjectId("602b767df4b4bf5b41662ec5"),
"name": "Not Applicable",
"sel": false
}
],
"type": "multiple"
},
{
"_id": ObjectId("602b79d35d4a1333b8b6e5ba"),
"name": "Organization",
"options": [
{
"id": ObjectId("602b79d353c89933b8238325"),
"name": "SW",
"sel": false
},
{
"id": ObjectId("602b79d353c89933b8238326"),
"name": "HW",
"sel": false
}
],
"type": "multiple"
}
]
}]
参数最多30个。
我需要在 mongo 中实现一个“过滤”集合。
如果我过滤一个或多个parameters._id,mongo 返回:
- 与
this parameters._id的options.sel匹配的集合_id - 所有
options.sel等于false的this parameters._id的集合_id - 如果
parameters._id已将options.name:"Not Applicable"设置为值options.sel:true,则不返回集合_id
例如,如果我匹配parameters._id:ObjectId("602b7455f4b4bf5b41662ec1") 和这个parameters.options.id:ObjectId("602b764ff4b4bf5b41662ec2"),我期望:
- 不是集合_id,对于
parameters._id:ObjectId("602b7455f4b4bf5b41662ec1"),特定parameters.options.id: ObjectId("602b767df4b4bf5b41662ec5")的值options.sel:true - 与查询匹配的所有集合_id
- 所有集合_id,对于
parameters._id:ObjectId("602b7455f4b4bf5b41662ec1"),所有特定的parameters.options.sel:false
接下来我需要为更多参数制定这条规则。
我想为每个规则实现三个聚合... 你有什么建议吗?
【问题讨论】:
-
能否请您包括预期的输出。
标签: mongodb mongodb-query