我在mongo shell中执行follow mongodb命令
db.coll.aggregate(...)
Run Code Online (Sandbox Code Playgroud)
我看到了结果列表.但是有可能看到查询执行时间吗?聚合查询的解释方法是否有任何等效函数.
Dmi*_*kin 30
var before = new Date()
#aggregation query
var after = new Date()
execution_mills = after - before
Run Code Online (Sandbox Code Playgroud)
ale*_*985 12
我看到在mongodb中有可能使用这两个命令:
db.setProfilingLevel(2)
所以在查询之后你可以使用db.system.profile.find()来查看查询执行时间等
Luk*_*tor 10
您可以time在.mongorc.js文件中添加一个函数(在您的主目录中):
function time(command) {
const t1 = new Date();
const result = command();
const t2 = new Date();
print("time: " + (t2 - t1) + "ms");
return result;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
time(() => db.coll.aggregate(...))
Run Code Online (Sandbox Code Playgroud)
警告
该方法没有给出相关结果 db.collection.find()
我会写一个答案来更好地解释这个.
基本上,聚合框架还没有explain()功能:https://jira.mongodb.org/browse/SERVER-4504
然而,有一种方法可以衡量客户端,但并非没有缺点:
不过话说回来,你可以通过在与mongos/ 相同的服务器上的MongoDB控制台中获得一个稍微准确的结果mongod.这将在两者之间创造很少,但仍然太多但足以获得你可以大致信任的阅读.因此,您可以在该位置使用@ Zagorulkin的答案.
或者你可以安装优秀的mongo-hacker,它会自动对每个查询进行pretty()计时,对其进行修改,对输出进行着色,对键进行排序等等:

| 归档时间: |
|
| 查看次数: |
29308 次 |
| 最近记录: |