我需要在mongodb中执行查询。文档存储如下
{
"_id": "5b506440a7769100817265b2",
"zones": [
"London",
"Berlin",
"Rome"
],
"width": 100,
"price_list_id": 2,
"heights": {
"200": {
"window_fixed_arch_low": {
"default": false,
"price": "2"
}
},
"300":{
"window_fixed_arch_regular": {
"default": false,
"price": "3"
}
}
}
}
我只想检索具有heights.*.window_fixed_arch_regular
属性的所有文档。我尝试过
({'heights.$.window_fixed_arch_regular', 'exists', true})
但没有运气。
不指定所有高度(在我的情况下为200和300)“搜索”并检查是否存在“ window_fixed_arch_low”的查询是什么?
答案 0 :(得分:1)
您可以在3.6中使用以下查询。
$objectToArray
将heights
文档转换为键值对,然后转换$filter
将输入值与文档中的值进行比较。
$expr
在查找查询中接受聚合表达式。
$gt > null
-聚合表达式,用于检查匹配值的位置,然后是$size
,以输出计数。
$gt > 0
-用于检查计数大于0的聚合表达式。
db.collectionName.find({
"$expr":{
"$gt":[
{"$size":{
"$filter":{
"input":{"$objectToArray":"$heights"},
"cond":{"$gt":["$$this.v.window_fixed_arch_low",null]}
}
}},
0
]
}
})