2013-02-20 112 views
4

我一直在我的日誌/ development.log看到這個,我想知道是否該查詢實際上是被我在數據庫中執行:我如何查看我的mongodb正在執行的查詢?

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

浩我可以看到我的蒙戈DB正在執行的查詢,所以我可以數他們,他們應該都是尋找命令,還是應該尋找別的東西?

回答

7

打印所有活動內容如下:

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

打印所有活躍寫道:

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

如果你喜歡使用currentOp.op通過特定的操作類型來過濾,你可以得到很多更細緻(插入,更新,刪除等)。

看看下面的頁面從MongoDB.org的文檔瞭解更多信息: http://docs.mongodb.org/manual/reference/current-op/

+1

這打高對我的谷歌搜索,我一直在尋找類似於mysql'SET global general_log = 1; SET global log_output ='table';'然後查詢我的應用程序所做的查詢(甚至可能通過查詢文本進行過濾)。這幫了我很大的忙,看看我的應用程序實際上查詢的是什麼,但不知道如何在MongoDB中執行此操作,並使用它進行搜索,從而使我找到與此類似的頁面來查找活動查詢。 – HMR 2014-06-18 11:17:15

+2

@HMR currentOp就是它聽起來像(只有當前操作)。如果您希望從您的應用程序收集所有數據庫活動,以便您可以分析查詢性能,那麼有一個相關但不同的工具。嘗試將配置文件級別設置爲「2」,將所有內容記錄到system.profile集合中。更多信息請訪問:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/ – 2014-11-14 23:15:13

+2

請注意,您不希望始終像以前那樣離開檔案級別。只能在短時間內像這樣運行,然後禁用它。大量分析確實會導致性能成本和額外的寫入。 – 2014-11-14 23:16:05

1

http://www.mongovue.com/提供了良好的UI界面,檢查服務器的運行狀態

+0

在引擎蓋下,這與我的回答完全相同,但如果您更喜歡使用GUI路由,這是一個不錯的選擇。 – 2013-02-20 16:42:09