Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tạo index trên trường lồng nhau (nested field) trong MongoDB

Sử dụng dot notation để chỉ định đường dẫn đến trường lồng nhau khi tạo index. Tạo collection:

> db.createIndexOnNestedFieldDemo.insertOne(
  { "UserDetails": { "UserPersonalDetails": { "UserFirstName": "John", "UserLastName": "Smith" } } }
);
{ "acknowledged": true, "insertedId": ObjectId("5ce929c778f00858fb12e916") }
> db.createIndexOnNestedFieldDemo.insertOne(
  { "UserDetails": { "UserPersonalDetails": { "UserFirstName": "Chris", "UserLastName": "Brown" } } }
);
{ "acknowledged": true, "insertedId": ObjectId("5ce929d678f00858fb12e917") }
> db.createIndexOnNestedFieldDemo.insertOne(
  { "UserDetails": { "UserPersonalDetails": { "UserFirstName": "David", "UserLastName": "Miller" } } }
);
{ "acknowledged": true, "insertedId": ObjectId("5ce929e378f00858fb12e918") }

Hiển thị document:

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

Kết quả:

{
  "_id": ObjectId("5ce929c778f00858fb12e916"),
  "UserDetails": { "UserPersonalDetails": { "UserFirstName": "John", "UserLastName": "Smith" } }
}
{
  "_id": ObjectId("5ce929d678f00858fb12e917"),
  "UserDetails": { "UserPersonalDetails": { "UserFirstName": "Chris", "UserLastName": "Brown" } }
}
{
  "_id": ObjectId("5ce929e378f00858fb12e918"),
  "UserDetails": { "UserPersonalDetails": { "UserFirstName": "David", "UserLastName": "Miller" } }
}

Tạo index trên trường lồng nhau UserDetails.UserPersonalDetails.UserLastName:

> db.createIndexOnNestedFieldDemo.createIndex({ "UserDetails.UserPersonalDetails.UserLastName": 1 });

Kết quả:

{
  "createdCollectionAutomatically": false,
  "numIndexesBefore": 1,
  "numIndexesAfter": 2,
  "ok": 1
}