Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để cải thiện trường truy vấn trong MongoDB?

Để cải thiện trường truy vấn trong MongoDB, bạn cần sử dụng chỉ mục. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu

> db.improveQueryDemo.insertOne(
... {
...    "PlayerDetails":[
...       {"PlayerName": "John", "PlayerGameScore": 5690},
...       {"PlayerName": "Carol", "PlayerGameScore": 2690},
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dbaf875e2eeda1d5c3670")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find ()

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

Điều này sẽ tạo ra kết quả sau

{
   "_id" : ObjectId("5c9dbaf875e2eeda1d5c3670"),
   "PlayerDetails" : [
      {
         "PlayerName" : "John",
         "PlayerGameScore" : 5690
      },
      {
         "PlayerName" : "Carol",
         "PlayerGameScore" : 2690
      }
   ]
}

Bây giờ bạn cần tạo một chỉ mục trên trường để cải thiện việc truy vấn. Sau đây là truy vấn

> db.improveQueryDemo.ensureIndex({"PlayerDetails.PlayerName":1});

Điều này sẽ tạo ra kết quả sau

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

Bây giờ bạn có thể tìm kiếm theo kết quả phù hợp chính xác. Sau đây là truy vấn

> db.improveQueryDemo.find({"PlayerDetails.PlayerName":"Carol"}).pretty();

Điều này sẽ tạo ra kết quả sau

{
   "_id" : ObjectId("5c9dbaf875e2eeda1d5c3670"),
   "PlayerDetails" : [
      {
         "PlayerName" : "John",
         "PlayerGameScore" : 5690
      },
      {
         "PlayerName" : "Carol",
         "PlayerGameScore" : 2690
      }
   ]
}