我在 mongo shell 中执行以下 mongodb 命令
db.coll.aggregate(...)
我看到了结果列表。但是可以看到查询执行时间吗?聚合查询的解释方法是否有任何等效功能。
我在 mongo shell 中执行以下 mongodb 命令
db.coll.aggregate(...)
我看到了结果列表。但是可以看到查询执行时间吗?聚合查询的解释方法是否有任何等效功能。
var before = new Date()
#aggregation query
var after = new Date()
execution_mills = after - before
您可以向文件中添加一个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()
我看到在 mongodb 中可以使用这两个命令:
db.setProfilingLevel(2)
因此查询后您可以使用 db.system.profile.find() 查看查询执行时间和其他
或者您可以安装出色的mongo-hacker,它会自动为每个查询计时、执行查询、pretty()
对输出进行着色、对键进行排序等等:
我会写一个答案来更好地解释这一点。
基本上,聚合框架还没有 explain() 功能:https ://jira.mongodb.org/browse/SERVER-4504
然而,有一种方法可以衡量客户端,但并非没有缺点:
但是话虽如此,您可以通过在与mongos
/相同的服务器上的 MongoDB 控制台中执行此操作来获得稍微准确的结果mongod
。这将在中间创建很少的内容,仍然太多但足以获得您可以大致信任的读数。因此,您可以在该位置使用@Zagorulkin 的答案。