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

MongoDB: สร้างดัชนี (Index) บนฟิลด์ในออบเจ็กต์ซ้อน (Embedded Document)

ใช้ createIndex() (แทน ensureIndex) ร่วมกับ dot notation เพื่อสร้างดัชนีบนฟิลด์ภายใน embedded document สร้างคอลเลกชันและดัชนี:

> db.demo323.insertOne({"details":{"Name":"Chris","Age":34}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e51157af8647eb59e56206e") }
> db.demo323.insertOne({"details":{"Name":"David","Age":31}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511581f8647eb59e56206f") }
> db.demo323.insertOne({"details":{"Name":"Bob","Age":28}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e511589f8647eb59e562070") }
> db.demo323.createIndex({"details.Name":1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 }

แสดงข้อมูล:

> db.demo323.find();

ค้นหาด้วยฟิลด์ที่มีดัชนี:

> db.demo323.find({"details.Name":"Bob"});

ผลลัพธ์:

{ "_id" : ObjectId("5e511589f8647eb59e562070"), "details" : { "Name" : "Bob", "Age" : 28 } }

ข้อมูลเพิ่มเติม

  • Dot notation ใน createIndex(): "parentField.childField": 1
  • ดัชนีนี้เรียกว่า index on embedded field
  • รองรับ compound index: {"details.Name": 1, "details.Age": -1}
  • ใช้ db.demo323.getIndexes() ดูดัชนีทั้งหมด
  • ใช้ db.demo323.explain().find({"details.Name":"Bob"}) ตรวจสอบว่าใช้ดัชนีจริง