如何查看我的mongodb正在执行的查询?

Kam*_*i81 5 mongodb

我一直在我的log/development.log中看到这个,我想知道这个查询是否实际上是在我的数据库中执行的:

MONGODB (0ms) socialcrunch_development['tags'].find({:_id=>"secrets"}).limit(-1).sort([[:_id, :asc]])
Run Code Online (Sandbox Code Playgroud)

我可以看到我的mongo数据库上正在执行的查询,所以我可以计算它们,如果它们通常都是.find命令,还是我应该寻找其他东西?

Bra*_*ack 8

打印所有活动读数:

db.currentOp().inprog.forEach(
   function(d){
     if(d.waitingForLock && d.lockType != "read")
        printjson(d)
     })
Run Code Online (Sandbox Code Playgroud)

打印所有活动写入:

db.currentOp().inprog.forEach(
   function(d){
     if(d.waitingForLock && d.lockType != "write")
        printjson(d)
     })
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以通过使用currentOp.op特定操作类型(插入,更新,删除等)进行筛选,从而获得更多细化.

有关详细信息,请查看MongoDB.org文档中的以下页面:http://docs.mongodb.org/manual/reference/current-op/

  • @HMR currentOp听起来就像它(只有当前的操作).如果您希望从应用程序中收集所有数据库活动,以便分析查询性能,那么可以使用相关但不同的工具.尝试将配置文件级别设置为"2",将所有内容记录到system.profile集合中.更多信息:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/ (2认同)
  • 请注意,您不希望始终保持配置文件级别.只在短时间内运行它,然后禁用它.分析很大程度上会导致性能成本和额外写入. (2认同)