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

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

เพื่อค้นหาเอกสารที่มีฟิลด์เฉพาะ ให้ใช้ตัวดำเนินการ $exists

สร้างคอลเลกชันพร้อมเอกสารที่มีอาร์เรย์ ClientDetails (บางรายการมี ClientLastName บางรายการไม่มี):

> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"Chris","ClientAge":34}]}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b2a31627c0c63e7dba69") } 
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"John","ClientLastName":"Smith","ClientAge":31}]}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b2be1627c0c63e7dba6a") } 
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"David","ClientAge":33}]}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b2cd1627c0c63e7dba6b") } 
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"David","ClientLastName":"Miller","ClientAge":31}]}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b2de1627c0c63e7dba6c") }

แสดงเอกสารทั้งหมดด้วย find().pretty():

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

ผลลัพธ์ - เอกสารที่ 1 และ 3 ไม่มี ClientLastName:

คำสั่งค้นหาเอกสารที่มีฟิลด์ ClientLastName อยู่ในอาร์เรย์ ClientDetails:

> db.demo247.find({"ClientDetails.ClientLastName":{$exists:true}});

ผลลัพธ์ - ได้เฉพาะเอกสารที่มี ClientLastName (John และ David คนที่ 2):