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

ปรับปรุง Query MongoDB ด้วย Multikey Index ในอาร์เรย์


ใช้ $elemMatch สำหรับ Query ออบเจ็กต์ในอาร์เรย์

เมื่อต้องการค้นหาเอกสารที่อาร์เรย์มีออบเจ็กต์ตรงตามเงื่อนไขหลายฟิลด์พร้อมกัน ให้ใช้ $elemMatch ซึ่งทำงานร่วมกับ Multikey Index ได้อย่างมีประสิทธิภาพ

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

> db.demo444.insertOne({ "Information": [{ id: 1, Name: "Chris" }] });
> db.demo444.insertOne({ "Information": [{ id: 2, Name: "David" }] });
> db.demo444.insertOne({ "Information": [{ id: 3, Name: "Bob" }] });

Query ด้วย $elemMatch

> db.demo444.find({
  "Information": {
    $elemMatch: { id: 2, Name: "David" }
  }
});

ผลลัพธ์

{ "_id": ObjectId(...), "Information": [{ "id": 2, "Name": "David" }] }

ความแตกต่างระหว่าง $elemMatch และ Dot Notation ธรรมดา

Queryความหมาย
{ "Information.id": 2, "Information.Name": "David" }หาเอกสารที่มี id=2 และ Name="David" ในอิลิเมนต์ต่างกันได้
{ "Information": { $elemMatch: { id: 2, Name: "David" } } }หาเอกสารที่มี อิลิเมนต์เดียวกัน ที่ id=2 และ Name="David" พร้อมกัน

Multikey Index

MongoDB สร้าง Multikey Index อัตโนมัติเมื่อสร้าง index บนฟิลด์ที่เป็นอาร์เรย์ ทำให้ $elemMatch ใช้ index ได้อย่างมีประสิทธิภาพ

// สร้าง index เพื่อประสิทธิภาพ
db.demo444.createIndex({ "Information.id": 1, "Information.Name": 1 });