中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB 3.0 集合方法 db.collection.explain()

發布時間:2020-08-20 13:18:48 來源:網絡 閱讀:1581 作者:UltraSQL 欄目:MongoDB數據庫

MongoDB 3.0 集合方法 db.collection.explain()

 

描述



db.collection.explain()

 

3.0版本的新功能


返回如下操作的查詢計劃信息:

aggregate();

count();

find();

group();

remove();

update();


為了使用db.collection.explain(),追加以上可用方法到db.collection.explain()來做解析:

db.collection.explain().<method(...)>


例如:

db.products.explain().remove({category:"apparel"},{justOne:true})


更多例子,查看下面示例部分。使用db.collection.explain()的可用方法列表,查看db.collection.explain().help()部分。


db.collection.explain()方法有如下參數:


參數 類型 描述

verbosity string 可選。指定解析輸出的詳細信息模式。該模式影響了explain()的行為,決定了返回信息的數量。可能的模式有:“queryPlanner”、“executionStats”和“allPlansExecution”。

默認的模式是“queryPlanner”。


為了cursor.explain()早期版本的向后兼容,MongoDB標識true為“allPlansExecution”,false為“queryPlanner”。


關于模式的更多信息,查看詳細信息模式部分。

 

行為



詳細信息模式


db.collection.explain()的行為和返回信息數量依賴于verbosity模式。

 

queryPlanner模式


默認情況下,db.collection.explain()運行在queryPlanner詳細信息模式。


MongoDB運行查詢優化器選擇評估操作的最優計劃。


db.collection.explain()返回被評估方法的queryPlanner信息。

 

executionStats模式


MongoDB運行查詢優化器選擇最優計劃,執行最優計劃來完成操作,并返回描述最優計劃執行的統計信息。


對于寫操作,db.collection.explain()返回關于將會被執行的更新或刪除操作的信息,但不應用修改到數據庫。


db.collection.explain()對于被評估的方法返回queryPlanner和executionStats信息。然而,executionStats對于放棄的計劃不提供查詢執行信息。

 

allPlansExecution模式


MongoDB運行查詢優化器選擇最優計劃,執行最優計劃來完成操作。在“allPlansExecution”模式,MongoDB返回描述最優計劃的執行統計信息,也返回在計劃選擇期間其他備選計劃的統計信息。


對于寫操作,db.collection.explain()返回關于將會被執行的更新或刪除操作的信息,但不應用修改到數據庫。


db.collection.explain()對于被評估的方法返回queryPlanner和executionStats信息。executionStats對于最優計劃博阿含完整的查詢執行信息。


如果查詢優化器評估了多個計劃,對于最優和被放棄的備選計劃,executionStats信息也包含在計劃選擇階段捕獲的部分執行信息。

 

explain()技巧


db.collection.explain()方法包裝了explain命令,它是運行explain的更好方式。


db.collection.explain().find()類似于db.collection.find().explain()有如下關鍵不同:

1.db.collection.explain().find()結構允許增加查詢修飾符鏈。列出查詢修飾符列表,查看db.collection.explain().find().help()部分。

2.db.collection.explain().find()返回一個游標,它需要調用.next(),或者它的別名.finish(),以返回explain()結果。如果交互式運行在mongo shell,mongo shell會自動調用.finish()來返回結果。對于腳本,然而,你必須顯式調用.next()或.finish()以返回結果。列出游標相關的方法,查看db.collection.explain().find().help()部分。


db.collection.explain().aggregate()等價于傳遞explain選項到db.collection.aggregate()方法。

 

help()


為了查看db.collection.explain()支持的操作的列表,運行:

db.collection.explain().help()


db.collection.explain().find()返回一個游標,它允許增加查詢修飾符鏈。為了查看db.collection.explain().find()支持的查詢修飾符的列表以及游標相關的方法,運行:

db.collection.explain().find().help()


你可以鏈接多個修飾符到db.collection.explain().find()。示例,可以查看使用修飾符解析find()部分。

 

示例


queryPlanner模式


默認情況下,db.collection.explain()運行在“queryPlanner”詳細信息模式。


下面的示例對于指定的count()操作,以“queryPlanner”模式運行db.collection.explain()來返回查詢計劃信息:

db.products.explain().count( { quantity: { $gt: 50 } } )

 

executionStats模式


下面的示例對于指定的find()操作,以“executionStats”詳細信息模式運行db.collection.explain()來返回查詢計劃和執行信息:

db.products.explain("executionStats").find(
{ quantity: { $gt: 50 }, category: "apparel" }
)

 

allPlansExecution模式


下面的示例以“allPlansExecution”詳細信息模式運行db.collection.explain()。對于指定的update()操作,db.collection.explain()返回所有的評估的計劃的queryPlanner和executionStats:


注意:

解析的執行將不會修改數據,但是會運行更新操作的預查詢。對于備選計劃,MongoDB返回在計劃選擇階段捕獲的執行信息。

db.products.explain("allPlansExecution").update(
{ quantity: { $lt: 1000}, category: "apparel" },
{ $set: { reorder: true } }
)

 

使用修飾符解析find()


db.collection.explain().find()結構允許查詢修飾符鏈。例如,下面的操作提供了使用sort()和hint()查詢修飾符的find()方法的信息:

db.products.explain("executionStats").find(
{ quantity: { $gt: 50 }, category: "apparel" }
).sort( { quantity: -1 } ).hint( { category: 1, quantity: -1 } )


獲得可用的查詢修飾符列表,在mongo shell中運行:

db.collection.explain().find().help()

 

重申explain().find()返回游標


db.collection.explain().find()返回解析結果的游標。如果在mongo shell交互式運行,mongo shell自動使用.next()方法重復這個游標。對于腳本,然而,你必須顯式調用.next()(或者它的別名.finish())以返回結果:

var explainResult = db.products.explain().find( { category: "apparel" } ).next();

 

輸出


db.collection.explain()操作可以返回相關信息:

1.queryPlanner,它描述了查詢優化器選擇的計劃和列出放棄的計劃;

2.executionStats,它描述了最優計劃和放棄計劃的執行;

3.serverInfo,它提供了關于MongoDB實例的信息。


詳細信息模式(例如:queryPlanner、executionStats、allPlansExecution)決定了結果是否包含executionStats,和executionStats是否包含在計劃選擇階段捕獲的數據。


關于輸出的詳細信息,查看解析結果部分。


對于一個混合版本的分片集群,帶有3.0版本的mongos和至少一個2.6版本的mongod分片,當你在3.0版本的mongo shell運行db.collection.explain(),db.collection.explain()將重試$explain操作以2.6版本格式返回結果。

 

參見:

http://docs.mongodb.org/manual/reference/method/db.collection.explain/

http://docs.mongodb.org/manual/reference/command/explain/

http://docs.mongodb.org/manual/reference/explain-results/

http://docs.mongodb.org/manual/reference/operator/meta/explain/

http://docs.mongodb.org/manual/reference/operator/query-modifier/

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

塔河县| 莆田市| 龙岩市| 惠安县| 延寿县| 凤庆县| 泗水县| 华池县| 怀来县| 松滋市| 桂平市| 沁水县| 丰城市| 孝昌县| 开阳县| 谢通门县| 龙井市| 阜新市| 星子县| 札达县| 巩留县| 毕节市| 清涧县| 金平| 汶川县| 江北区| 甘德县| 息烽县| 荥经县| 东方市| 万载县| 黄骅市| 蒲江县| 洛浦县| 桑植县| 张家口市| 嘉鱼县| 衡阳市| 绍兴市| 建始县| 通海县|