繁体   English   中英

在mongodb中搜索嵌套数组元素

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM