繁体   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