簡體   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