我在mongo shell中执行followmongodb命令
db.coll.aggregate(...)
我看到了结果列表。但是否可以看到查询执行时间?对于聚合查询,解释方法是否有任何等效的函数。
svmlkihl1#
var before = new Date() #aggregation query var after = new Date() execution_mills = after - before
qncylg1j2#
您可以将time函数添加到.mongorc.js文件(在您的主目录中):
time
.mongorc.js
function time(command) { const t1 = new Date(); const result = command(); const t2 = new Date(); print("time: " + (t2 - t1) + "ms"); return result; }
然后你可以这样使用它:
time(() => db.coll.aggregate(...))
注意事项
对于db.collection.find(),该方法没有给予相关结果
db.collection.find()
ljo96ir53#
我看到在mongodb中可以使用这两个命令:
lg40wkob4#
或者你可以安装优秀的mongo-hacker,它会自动计算每个查询的时间,pretty()会对它进行处理,对输出进行着色,对键进行排序,等等:
pretty()
oyt4ldly5#
我会写一个答案来更好地解释这一点。基本上,聚合框架还没有explain()功能:https://jira.mongodb.org/browse/SERVER-4504然而,有一种方法可以衡量客户端,但并非没有其缺点:
然而,话虽如此,您可能可以通过在与mongos/mongod相同的服务器上的MongoDB控制台中执行此操作来获得稍微准确的结果。这将创造很少的中间,仍然太多,但足以可能得到一个阅读你可以大致信任。因此,你可以在那个位置使用@Zagorulkin的答案。
mongos
mongod
mw3dktmi6#
是的,现在你可以在mongosh的聚合中使用explain()了。为此,您只需将以下内容添加到命令-> db.yourCollectionName.explain("executionStats").aggregate(<yourAggregationStages>)然后您可以看到响应也包含所提供的聚合的执行统计信息。这是你会看到的格式:executionStats: { executionSuccess: true, executionTimeMillis: '5.833', planningTimeMillis: '0.461', executionStages: { stage: 'SUBSCAN', nReturned: '1', executionTimeMillisEstimate: '5.124', ...
db.yourCollectionName.explain("executionStats").aggregate(<yourAggregationStages>)
executionStats: { executionSuccess: true, executionTimeMillis: '5.833', planningTimeMillis: '0.461', executionStages: { stage: 'SUBSCAN', nReturned: '1', executionTimeMillisEstimate: '5.124', ...
6条答案
按热度按时间svmlkihl1#
qncylg1j2#
您可以将
time
函数添加到.mongorc.js
文件(在您的主目录中):然后你可以这样使用它:
注意事项
对于
db.collection.find()
,该方法没有给予相关结果ljo96ir53#
我看到在mongodb中可以使用这两个命令:
lg40wkob4#
或者你可以安装优秀的mongo-hacker,它会自动计算每个查询的时间,
pretty()
会对它进行处理,对输出进行着色,对键进行排序,等等:oyt4ldly5#
我会写一个答案来更好地解释这一点。
基本上,聚合框架还没有explain()功能:https://jira.mongodb.org/browse/SERVER-4504
然而,有一种方法可以衡量客户端,但并非没有其缺点:
然而,话虽如此,您可能可以通过在与
mongos
/mongod
相同的服务器上的MongoDB控制台中执行此操作来获得稍微准确的结果。这将创造很少的中间,仍然太多,但足以可能得到一个阅读你可以大致信任。因此,你可以在那个位置使用@Zagorulkin的答案。mw3dktmi6#
是的,现在你可以在mongosh的聚合中使用explain()了。为此,您只需将以下内容添加到命令->
db.yourCollectionName.explain("executionStats").aggregate(<yourAggregationStages>)
然后您可以看到响应也包含所提供的聚合的执行统计信息。这是你会看到的格式:
executionStats: { executionSuccess: true, executionTimeMillis: '5.833', planningTimeMillis: '0.461', executionStages: { stage: 'SUBSCAN', nReturned: '1', executionTimeMillisEstimate: '5.124', ...