簡體   English   中英

MongoDb 在包含多個 json object 的嵌套數組上找到操作

[英]MongoDb find opeartion on nested array having multiiple json object in it

我有一個數據集,其中 json 由其中包含多個 json 的數組組成。

數組中的對象有 4 個鍵,其中一些缺少 1 個鍵。

我想獲取數組中所有對象都缺少密鑰的文檔。

例如,從以下這些文件中:

{"test":1,desc:[{"price":1,"abc":"def"},{"price":2,"ac":"def"}]}
{"test":1,desc:[{"price":1,"abc":"def"},{"ac":"def"}]}
{"test":1,desc:[{"abc":"def"},{"ac":"def"}]}

我只想匹配最后一個文檔。

提前致謝..

您可以只使用$exists

db.collection.find(
    {
        "desc.price": {$exists: false}
    }
)

如果您還想要其他領域:

db.collection.find(
    {
        $or: [
            {
                "desc.price": {$exists: false}
            },
            {
                "desc.abc": {$exists: false}
            },
            {
                "desc.ac": {$exists: false}
            }
        ]
    }
)

需要注意的一點是空數組,即desc = []將始終與此查詢匹配。 如果你想確保至少有一個 object 使用這個查詢:

db.collection.find(
    {
       $and: [
           {
               "desc.price": {$exists: false}
           },
           {
               "desc.0": {$exists: true}
           }
       ]
    }
)

實現了這一點,只是制作了一個腳本,我使用一個數組來存儲價格的東西,然后使用。每個方法都未定義價格,它返回了我想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM