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

ค้นหาเอกสารใน MongoDB ที่มีรายการในอาร์เรย์อย่างน้อยหนึ่งรายการไม่อยู่ในอีกอาร์เรย์หนึ่ง

สำหรับกรณีนี้ ให้ใช้ Regular Expression (Regex) ในเมธอด find() ของ MongoDB เริ่มต้นด้วยการสร้างคอลเลกชันพร้อมเอกสาร:

> db.demo228.insertOne({"Subjects":["MongoDB","Java"]}); 
{ 
    "acknowledged" : true, 
    "insertedId" : ObjectId("5e3fa51f03d395bdc213473b") 
} 
> db.demo228.insertOne({"Subjects":["MongoDB","Java","MySQL"]}); 
{ 
    "acknowledged" : true, 
    "insertedId" : ObjectId("5e3fa52c03d395bdc213473c") 
}

แสดงเอกสารทั้งหมดในคอลเลกชันด้วยเมธอด find():

> db.demo228.find();

ผลลัพธ์ที่ได้:

{ "_id" : ObjectId("5e3fa51f03d395bdc213473b"), "Subjects" : [ "MongoDB", "Java" ] } 
{ "_id" : ObjectId("5e3fa52c03d395bdc213473c"), "Subjects" : [ "MongoDB", "Java", "MySQL" ] }

คำสั่งค้นหาเอกสารที่มีรายการในอาร์เรย์อย่างน้อยหนึ่งรายการไม่อยู่ในอีกอาร์เรย์หนึ่ง (โดยใช้ Regex แบบ Negative Lookahead):

> db.demo228.find({ "Subjects": /^(?!MongoDB|Java)/ });

ผลลัพธ์ที่ได้ - พบเฉพาะเอกสารที่มี "MySQL" ซึ่งไม่อยู่ในรายการ "MongoDB" หรือ "Java":

{ "_id" : ObjectId("5e3fa52c03d395bdc213473c"), "Subjects" : [ "MongoDB", "Java", "MySQL" ] }