MongoDb在其中具有多个json对象的嵌套数组上找到opeartion

问题描述 投票:0回答:1

我有一个数据集,其中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"}]}

我只想匹配最后一个文档。

预先感谢..

arrays json mongodb
1个回答
0
投票

您可以只使用$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 = []。如果要确保至少有一个对象,请使用此查询:

db.collection.find(
    {
       $and: [
           {
               "desc.price": {$exists: false}
           },
           {
               "desc.0": {$exists: true}
           }
       ]
    }
)
© www.soinside.com 2019 - 2024. All rights reserved.