这是文档结构
{
someProp: 'string value',
options:{
environment: [{value: 'Gym'}, {value:'Water'}, {value: 'Home', label:'other string'}]
}
}
我需要过滤options.environment
包含{value: 'Gym'}
和{value: 'Water'}
的所有文档。
使用mongodb汇总$match
或其他策略($unwind
/ $group
,$map
)进行此查询的最佳方法是什么?
答案 0 :(得分:1)
您可以使用$all
查询运算符执行此操作:
{
"options.environment.value": {
"$all": ["Gym", "Water"]
}
}
一般来说,MongoDB在运行查询之前会使结构变得扁平化。在您的情况下,这意味着您正在有效地搜索形状如下的文档:
{
"someProp": "string value",
"options": {
"environment": {
"value": ["Gym", "Water", "Home"],
"label": ["other string"]
}
}
}
如果您想要相反的行为,那么您可以使用$elemMatch
查询运算符。
这些都不是特定于聚合框架的,因此如果您不需要任何其他聚合框架功能,则可以使用常规查找操作。