如果 id 等于文档字段数组值,则排除 MongoDB 查询


为此,使用 $not 和 $in。让我们创建一个包含文档的集合 -

[
   {
      id: "101",
      subjectid: [
         "102"
      ]
   },
   {
      id: "102",
      subjectid: [
         "102"
      ]
   }
]

以下是快照。

使用 find() 方法显示集合中的所有文档 -

db.collection.find()

这将生成以下输出 -

[
   {
      "_id": ObjectId("5a934e000102030405000000"),
      "id": "101",
      "subjectid": [
         "102"
      ]
   },
   {
      "_id": ObjectId("5a934e000102030405000001"),
      "id": "102",
      "subjectid": [
         "102"
      ]
   }
]

以下查询使用 $expr、$not 和 $in 获取不匹配字段数组值的排除值 -

db.collection.find({
   $expr: {
      $not:{
         $in: [
            "$id",
            "$subjectid"
         ]
      }
   }
})

这将生成以下输出 -

[
   {
      "_id": ObjectId("5a934e000102030405000000"),
      "id": "101",
      "subjectid": [
         "102"
      ]
   }
]

更新于: 30-Mar-2020

702 次浏览

开启您的 职业生涯

完成课程以获得认证

开始
广告
© . All rights reserved.