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

วิธีค้นหาเอกสาร MongoDB ที่ไม่มีฟิลด์เฉพาะ

ใช้ $exists: false ใน Aggregate

ตรวจสอบว่าฟิลด์มีอยู่หรือไม่ด้วย $exists หากไม่มี ให้แสดงเอกสารนั้นด้วย find() หรือใน pipeline

สร้างข้อมูลตัวอย่าง

> db.demo612.insertOne({id:1,"Info":[{Name:"Chris",Age:21},{Name:"David"}]});

แสดงข้อมูลทั้งหมด

> db.demo612.find().pretty();

ผลลัพธ์:

{ "_id" : ObjectId("5e987372f6b89257f5584d87"), "id" : 1, "Info" : [ { "Name" : "Chris", "Age" : 21 }, { "Name" : "David" } ] }

คิวรีค้นหาเอกสารที่ไม่มีฟิลด์ Age ในอาร์เรย์ Info

> db.demo612.aggregate({$unwind: "$Info"}, {$match: {"Info.Age":{$exists: false}}}, {$project: {"Info.Name": 1}})

ผลลัพธ์

{ "_id" : ObjectId("5e987372f6b89257f5584d87"), "Info" : { "Name" : "David" } }