n次我有一個MongoDB的集合world
在以下格式的文檔:如何查詢文件,其中陣列有一個字段超過MongoDB中
{
_id : ObjectId("4e8ae86d08101908e1000001"),
country : [
{
state: "Newyork",
type: 1
},
{
state: "California",
type: 1
},
{
state: "Texas",
type: 2
}
]
}
我們可以很容易地得到具有文檔四在arrary更指出:
db.world.find({'country.4': {$exists: true} })
但我怎麼能得到的文件,其中具有type: 1
四個或更多狀態的國陣?
此外,我想在查詢中避免$where
運算符。
編輯1
回答布雷克七權似乎對我,但是當我嘗試做反向即;得到的文件與少超過n區,然後我得到錯誤的結果:
下面是該查詢:
db.world.aggregate([
{ "$redact": {
"$cond": {
"if": {
"$lte": [
{ "$size": { "$setDifference": [
{ "$map": {
"input": "$country",
"as": "el",
"in": {
"$cond": {
"if": { "$eq": [ "$$el.type", 769 ] },
"then": "$$el",
"else": false
}
}
}},
[false]
]}},
4
]
},
"then": "$$KEEP",
"else": "$$PRUNE"
}
}}
]);