May 17, 2021 MongoDB
MongoDB query analysis ensures that the index we recommend is valid and is an important tool for query statement performance analysis.
Common functions for MongoDB query analysis are: explain() and hint().
The explain operation provides query information, uses indexes, query statistics, and so on. It helps us optimize the index.
Next we create an index of gender and user_name in the users collection:
>db.users.ensureIndex({gender:1,user_name:1}) </p> <p>现在在查询语句中使用 explain :</p> <pre> >db.users.find({gender:"M"},{user_name:1,_id:0}).explain()
The above explain() query returns the following results:
{ "cursor" : "BtreeCursor gender_1_user_name_1", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 0, "nscanned" : 1, "nscannedObjectsAllPlans" : 0, "nscannedAllPlans" : 1, "scanAndOrder" : false, "indexOnly" : true, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : { "gender" : [ [ "M", "M" ] ], "user_name" : [ [ { "$minElement" : 1 }, { "$maxElement" : 1 } ] ] } }
Now let's look at the fields of this result set:
Although The MongoDB query optimizer generally works well, you can also use hints to force MongoDB to use a specified index.
This approach can improve performance in some cases. An indexedcollection and a multi-field query (some fields are already indexed).
The following query instance specifies an index field user_name gender and data:
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})
You can use the explain() function to analyze the above query:
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()