首页 > 解决方案 > 查询具有对象数组的文档,其所有数组元素都包含值为 null 的键

问题描述

我想获取所有具有对象数组的文档,其所有数组元素都包含值为 null 的键

{  "_id" : ObjectId("5d769272db4f632399abbb14"),
   "used":true,
   "contacts":[
     {email:null, username:"john"},
     {email:"steve@gmail.com",username:"steve245"}
    ]
},
{  "_id" : ObjectId("5d769272db4f632399abbb14"),
   "used":false,
   "contacts":[
     {email:null, username:"paul"},
     {email:null, username:"retinza612"}
    ]
}

检索结果

{  "_id" : ObjectId("5d769272db4f632399abbb14"),
   "used":false,
   "contacts":[
     {email:null, username:"paul"},
     {email:null, username:"retinza612"}
    ]
}

标签: mongodbmongodb-query

解决方案


您必须使用$elemMatch查询运算符来查找“联系人不遵循 ($not) 至少一封电子邮件不为空的事实”的文档:

db.collection.find({
  "contacts": {
    $not: {
      $elemMatch: {
        email: {
          $ne: null
        }
      }
    }
  }
})

将按预期结果


推荐阅读