2014-02-24 84 views
0

我正在使用MongoDB和Node.js框架。在mongodb上列出最近的操作

有一種怪異的行爲,一些文件沒有得到插入分貝,雖然從圖ORM的觀點沒有錯誤:err = nullCollection.create()回調和新鮮的文件與_id返回。當我嘗試在db中搜索_id時 - 找不到文檔。

我試圖手動插入新的文檔到數據庫,它是成功的。

有沒有辦法從db的角度來追蹤這些操作?一些命令列出最近的請求及其結果..?

回答

0

內MongoDB的跟蹤誤差的最顯着的方法是使用--diaglog選項:http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--diaglog3也許水平,但1也許夠你。

正如@Neil所指出的那樣,不幸的是2.6版已經被棄用了。目前

的唯一方法是寫出來的所有操作MongoDB的執行,通過@Rauls答案,然後用一個查詢,如:

db.system.profile.find({op:{$in:['update', 'insert', 'remove']}}); 

,並可能調整用於分析的上限集合:http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/#profiler-overhead捕捉你想要的金額。

+0

的--diaglog選項被認爲是已廢棄](http://docs.mongodb.org/master/release-notes /2.6/#diaglog-option-for-mongod-deprecated)從開發版本2.5.5開始,並將在未來的版本中刪除。所以推薦使用它並不是一個好的選擇。 –

+0

@NeilLunn太糟糕了,它比單獨的分析級別產生更好的統計數據 – Sammaye

+0

分析是首選選項,並且預計會進行改進。 –

1

您可以爲所有操作啓用分析:

db.setProfilingLevel(2) 

然後,看看system.profile收集,看看有什麼情況發生。 system.profile是可以作爲任何其他集合進行搜索的封頂集合。剖析可以吵,最終你應該改變system.profile集合的大小

db.setProfilingLevel(0) 

db.system.profile.drop() 

db.createCollection("system.profile", { capped: true, size:4000000 }) 

db.setProfilingLevel(2) 
+1

注意,目前這會造成很多噪音,需要用一個查詢來過濾OP所尋找的OP以及系統的封頂集合。配置文件可能需要根據捕獲的長度調整大小 – Sammaye

+0

@Sammaye:注意,謝謝 –