[英]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.