การทำงานของ Index บน Array ใน MongoDB
MongoDB จะจัดทำดัชนี (Index) ทุกค่าใน Array เพื่อให้สามารถ Query หา Element เดี่ยวได้
สร้างข้อมูลตัวอย่าง
> db.indexingForArrayElementDemo.insertOne({"StudentFavouriteSubject":["MongoDB","MySQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8acdca6cea1f28b7aa0816") }
สร้าง Index บน Field Array
> db.indexingForArrayElementDemo.ensureIndex({"StudentFavouriteSubject":1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
Query หา Element เดี่ยวใน Array
> db.indexingForArrayElementDemo.find({"StudentFavouriteSubject":"MongoDB"}).pretty();
{ "_id" : ObjectId("5c8acdca6cea1f28b7aa0816"), "StudentFavouriteSubject" : [ "MongoDB", "MySQL" ] }
> db.indexingForArrayElementDemo.find({"StudentFavouriteSubject":"MySQL"}).pretty();
{ "_id" : ObjectId("5c8acdca6cea1f28b7aa0816"), "StudentFavouriteSubject" : [ "MongoDB", "MySQL" ] }
ทั้งสอง Query คืนค่า Document เดียวกัน เนื่องจาก MongoDB จัดทำดัชนีทุก Element ใน Array