Để nhận một kế hoạch truy vấn trong MongoDB, hãy sử dụng giải thích (). Toán tử $ giải thích cung cấp thông tin về kế hoạch truy vấn.
Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.demo408.insertOne({"Value":50}); { "acknowledged" : true, "insertedId" : ObjectId("5e70e3a115dc524f70227678") } > db.demo408.insertOne({"Value":20}); { "acknowledged" : true, "insertedId" : ObjectId("5e70e3a715dc524f70227679") } > db.demo408.insertOne({"Value":45}); { "acknowledged" : true, "insertedId" : ObjectId("5e70e3ac15dc524f7022767a") } > db.demo408.insertOne({"Value":35}); { "acknowledged" : true, "insertedId" : ObjectId("5e70e3af15dc524f7022767b") } > db.demo408.createIndex({Value:1}); { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 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.demo408.find();
Điều này sẽ tạo ra kết quả sau -
{ "_id" : ObjectId("5e70e3a115dc524f70227678"), "Value" : 50 } { "_id" : ObjectId("5e70e3a715dc524f70227679"), "Value" : 20 } { "_id" : ObjectId("5e70e3ac15dc524f7022767a"), "Value" : 45 } { "_id" : ObjectId("5e70e3af15dc524f7022767b"), "Value" : 35 }
Sau đây là truy vấn để hiểu kế hoạch truy vấn trong MongoDB -
> db.demo408.explain().find( { Value: { $gt: 40 } } );
Điều này sẽ tạo ra kết quả sau -
{ "queryPlanner" : { "plannerVersion" : 1, "namespace" : "test.demo408", "indexFilterSet" : false, "parsedQuery" : { "Value" : { "$gt" : 40 } }, "winningPlan" : { "stage" : "FETCH", "inputStage" : { "stage" : "IXSCAN", "keyPattern" : { "Value" : 1 }, "indexName" : "Value_1", "isMultiKey" : false, "multiKeyPaths" : { "Value" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "Value" : [ "(40.0, inf.0]" ] } } }, "rejectedPlans" : [ ] }, "serverInfo" : { "host" : "DESKTOP-QN2RB3H", "port" : 27017, "version" : "4.0.5", "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" }, "ok" : 1 }