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

MongoDB - diễn giải thông tin về kế hoạch truy vấn cho phương thức db.collection.find ()

Để biết thông tin về kế hoạch truy vấn, hãy sử dụng giải thích () trong MongoDB. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo637.ensureIndex({ClientName:1});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}
> db.demo637.insert({ClientName:"John"});
WriteResult({ "nInserted" : 1 })
> db.demo637.insert({ClientName:"Bob"});
WriteResult({ "nInserted" : 1 })
> db.demo637.insert({ClientName:"Johnson"});
WriteResult({ "nInserted" : 1 })

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.demo637.find();

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

{ "_id" : ObjectId("5e9c26916c954c74be91e6db"), "ClientName" : "John" }
{ "_id" : ObjectId("5e9c26936c954c74be91e6dc"), "ClientName" : "Bob" }
{ "_id" : ObjectId("5e9c269d6c954c74be91e6dd"), "ClientName" : "Johnson" }

Trường hợp 1 -

Đây là truy vấn cho regexp / / -

> db.demo637.find({ClientName:/john/}).explain();

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

{
   "queryPlanner" : {
      "plannerVersion" : 1,
      "namespace" : "test.demo637",
      "indexFilterSet" : false,
      "parsedQuery" : {
         "ClientName" : {
            "$regex" : "john"
      }
   },
   "winningPlan" : {
      "stage" : "FETCH",
     "inputStage" : {
      "stage" : "IXSCAN",
      "filter" : {
         "ClientName" : {
            "$regex" : "john"
         }
      },
      "keyPattern" : {
         "ClientName" : 1
      },
      "indexName" : "ClientName_1",
      "isMultiKey" : false,
      "multiKeyPaths" : {
         "ClientName" : [ ]
      },
      "isUnique" : false,
      "isSparse" : false,
      "isPartial" : false,
      "indexVersion" : 2,
      "direction" : "forward",
      "indexBounds" : {
         "ClientName" : [
            "[\"\", {})",
            "[/john/, /john/]"
         ]
      }
   }
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
   "host" : "DESKTOP-QN2RB3H",
   "port" : 27017,
   "version" : "4.0.5",
   "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
},
"ok" : 1
}

Trường hợp 2 -

Sau đây là truy vấn cho regexp / ^ / -

> db.demo637.find({ClientName:/^john/}).explain();

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

{
   "queryPlanner" : {
      "plannerVersion" : 1,
      "namespace" : "test.demo637",
      "indexFilterSet" : false,
      "parsedQuery" : {
         "ClientName" : {
            "$regex" : "^john"
         }
      },
      "winningPlan" : {
         "stage" : "FETCH",
         "inputStage" : {
            "stage" : "IXSCAN",
            "keyPattern" : {
               "ClientName" : 1
            },
            "indexName" : "ClientName_1",
            "isMultiKey" : false,
            "multiKeyPaths" : {
               "ClientName" : [ ]
            },
            "isUnique" : false,
            "isSparse" : false,
            "isPartial" : false,
            "indexVersion" : 2,
            "direction" : "forward",
            "indexBounds" : {
               "ClientName" : [
                  "[\"john\", \"joho\")",
                  "[/^john/, /^john/]"
               ]
            }
         }
      },
      "rejectedPlans" : [ ]
   },
   "serverInfo" : {
      "host" : "DESKTOP-QN2RB3H",
      "port" : 27017,
      "version" : "4.0.5",
      "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
   },
   "ok" : 1
}