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

การใช้ $elemMatch บน First-level Array ใน MongoDB

ใช้ $in แทน $elemMatch สำหรับ First-level Array

สำหรับ Array ระดับบนสุด (First-level Array) ควรใช้ $in operator แทน $elemMatch

Syntax

db.yourCollectionName.find({yourFieldName:{$in:["yourValue"]}}).pretty();

ตัวอย่าง

> db.firstLevelArrayDemo.insertOne({"StudentName":"Chris","StudentTechnicalSkills":["Mongo DB","MySQL","SQL Server"]});
> db.firstLevelArrayDemo.insertOne({"StudentName":"Robert","StudentTechnicalSkills":["C","Java","C++"]});

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

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

ค้นหาด้วย $in: หา Student ที่มี Skill "MongoDB"

> db.firstLevelArrayDemo.find({StudentTechnicalSkills:{$in:["MongoDB"]}}).pretty();

ผลลัพธ์: พบเฉพาะ Chris ที่มี MongoDB ใน Skills

{
  "_id" : ObjectId("5ca2360f66324ffac2a7dc71"),
  "StudentName" : "Chris",
  "StudentTechnicalSkills" : [ "MongoDB", "MySQL", "SQL Server" ]
}

สรุป: $in ใช้สำหรับ First-level Array ง่ายและมีประสิทธิภาพ $elemMatch เหมาะสำหรับ Nested Arrays (Array ของ Objects/Sub-documents)