天天看點

MongoDB檢視目前操作db.currentOp()

MongoDB檢視目前操作db.currentOp()

定義

db.currentOp()  

    傳回資料庫執行個體上正在運作的操作資訊的文檔。

    db.currentOp()方法有如下格式:    

    db.currentOp(<operations>)   

    db.currentOp()方法可使用如下可選參數:    

    參數            類型            描述    

    operations    布爾值或文檔    可選。指定報告的操作。可以輸入布爾值或一個文檔。    

                    指定true,包含空閑連接配接和系統操作。    

                    指定帶有查詢條件的文檔,隻報告比對條件的操作。

行為

如果傳遞true給db.currentOp(),該方法傳回所有操作的資訊,包括空閑連接配接和系統操作。  

db.currentOp(true) 

傳遞true等于傳遞了一個查詢文檔{ '$all': true }。

如果傳遞一個查詢文檔給db.currentOp(),隻傳回比對查詢條件的目前操作。

你也可以指定{ '$all: true }查詢文檔傳回所有正在運作的操作資訊,包括空閑連接配接和系統操作。如果

查詢文檔包括 '$all':true 以及其他查詢條件,隻會應用 '$all': true。

通路控制

在系統上運作使用者授權驗證,使用者必須有通路inprog行為的權限。

示例

下面的示例使用帶有不同查詢文檔的db.currentOp()方法過濾輸出。

等待鎖的寫操作

下面的示例傳回正在等待鎖的所有寫操作資訊:

db.currentOp(   
   {    
     "waitingForLock" : true,    
     $or: [    
        { "op" : { "$in" : [ "insert", "update", "remove" ] } },    
        { "query.findandmodify": { $exists: true } }    
    ]    
   }    
)      

沒有Yields的活動操作

下面的示例傳回所有活動的正在運作的還沒有Yields的操作的資訊:

db.currentOp(   
   {    
     "active" : true,    
     "numYields" : 0,    
     "waitingForLock" : false    
   }    
)      

對于特定資料庫的活動操作

下面的示例傳回對于資料庫db1運作時間大于3秒的所有活動操作:

db.currentOp(   
   {    
     "active" : true,    
     "secs_running" : { "$gt" : 3 },    
     "ns" : /^db1\./    
   }    
)      
db.currentOp(   
    {    
      $or: [    
        { op: "query", "query.createIndexes": { $exists: true } },    
        { op: "insert", ns: /\.system\.indexes\b/ }    
      ]    
    }    
)