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

Query อาร์เรย์ของอาร์เรย์ (Array of Arrays) ใน MongoDB

ใช้ $elemMatch ซ้อนกัน 2 ชั้น ร่วมกับ $in เพื่อค้นหาในอาร์เรย์ของอาร์เรย์

ตัวอย่างการใช้งาน

สร้างคอลเลกชัน arrayOfArraysDemo:

> db.arrayOfArraysDemo.insertOne({"EmployeeName":"Larry","EmployeeSkills":[["Java","MongoDB","MySQL","SQL Server"]]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c7f7a8d8d10a061296a3c5b") }
> db.arrayOfArraysDemo.insertOne({"EmployeeName":"Mike","EmployeeSkills":[["C","C++"]]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c7f7aa68d10a061296a3c5c") }

แสดงข้อมูล:

> db.arrayOfArraysDemo.find().pretty();
{"_id" : ObjectId("5c7f7a8d8d10a061296a3c5b"), "EmployeeName" : "Larry", "EmployeeSkills" : [ [ "Java", "MongoDB", "MySQL", "SQL Server" ] ] }
{"_id" : ObjectId("5c7f7aa68d10a061296a3c5c"), "EmployeeName" : "Mike", "EmployeeSkills" : [ [ "C", "C++" ] ] }

ค้นหาพนักงานที่มีทักษะ "MongoDB" ในอาร์เรย์ซ้อนกัน:

> db.arrayOfArraysDemo.find({'EmployeeSkills':{$elemMatch:{$elemMatch:{$in:['MongoDB']}}}}).pretty();
{"_id" : ObjectId("5c7f7a8d8d10a061296a3c5b"), "EmployeeName" : "Larry", "EmployeeSkills" : [ [ "Java", "MongoDB", "MySQL", "SQL Server" ] ] }

$elemMatch ชั้นนอกจับคู่อาร์เรย์ย่อย ชั้นในจับคู่สมาชิกภายในอาร์เรย์ย่อย