Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

แบบสอบถาม MongoDB เพื่อแยกหาก id เท่ากับค่าอาร์เรย์ฟิลด์เอกสาร


สำหรับสิ่งนี้ ให้ใช้ $not ร่วมกับ $in ให้เราสร้างคอลเลกชันที่มีเอกสาร -

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

นี่คือสแนปชอต

แบบสอบถาม MongoDB เพื่อแยกหาก id เท่ากับค่าอาร์เรย์ฟิลด์เอกสาร

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

db.collection.find()

แบบสอบถาม MongoDB เพื่อแยกหาก id เท่ากับค่าอาร์เรย์ฟิลด์เอกสาร

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

[
   {
      "_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"
      ]
   }
]