[英]Searching nested array elements in mongodb
我有一個名為“測試”的集合,其中有一個像這樣的文檔:
{
"_id" : 1
"letters" : [
[ "A", "B" ],
[ "C", "D" ],
[ "A", "E", "B", "F" ]
]
}
如果我這樣搜索:
db.getCollection('test').find({"_id" : 1}, {"letters": ["A", "B"] })
然后它將獲取記錄。
{
"_id" : 1
"letters" : [
[ "A", "B" ],
[ "C", "D" ],
[ "A", "E", "B", "F" ]
]
}
如果我這樣搜索:
db.getCollection('test').find({"_id" : 1}, {"letters": ["B", "A"] })
它不會獲取記錄
我的要求是,如果im也這樣給出([“ B”,“ A”]),則必須獲取文檔。 因為數組中已經存在相同的字母。
我將嘗試使用$ all運算符,但它不起作用
db.getCollection('test').find({"_id" : 1}, {"letters": {$all: ["B", "A"]} })
現在也不會獲取記錄
誰能給我解決方案。
您可以執行以下操作:
db.test.find(
{
"$and":[
{"_id" : ObjectId("5a16674b4828c9f51d3b3a18")},
{"$or":[{"letters": ["A", "B"] },{"letters": ["B", "A"] }]}
]
}
)
現在它將搜索具有["A","B"] OR ["B","A"]
的文檔。
db.getCollection('test').find(
{
"_id" : 1,
'letters':{
$elemMatch:{
$elemMatch:{
$in:['B','A']
}
}
}
}
)
該查詢將找到所有具有您在最后$ in關閉中指定的數組元素的文檔,例如,如果僅指定$ in:['C']或$ in:['B','A',它將找到相同的文檔。 ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.