我們在Heroku上使用MongoHQ插件,並使用Mongoid 3.0適配器。插件計劃帶有一個大小限制,當數據庫限制已達到時(除非配置爲安全模式 - 在這種情況下它會拋出異常),Mongo將默默無聞地寫入數據。如何判斷Heroku上的MongoID數據庫大小?
我想從應用程序內查詢我們有多接近,如果我們已經達到極限,發送警報。我怎麼能運行像db.stats()
命令,但使用Mongoid?
我們在Heroku上使用MongoHQ插件,並使用Mongoid 3.0適配器。插件計劃帶有一個大小限制,當數據庫限制已達到時(除非配置爲安全模式 - 在這種情況下它會拋出異常),Mongo將默默無聞地寫入數據。如何判斷Heroku上的MongoID數據庫大小?
我想從應用程序內查詢我們有多接近,如果我們已經達到極限,發送警報。我怎麼能運行像db.stats()
命令,但使用Mongoid?
我發現如何在Mongoid 3.x中使用Moped作爲驅動程序,而不是10gen的Ruby驅動程序。
這是筆者對摩托本人的回答,他回答了有關此事的github issue。
Mongoid.default_session.command(collstats: 'collection_name')
這將返回相同的結果db.stats()
從蒙戈控制檯。作爲額外的好處,如果集合被封頂,那麼在返回值中將會有一個標誌表明這一點。
您可以在您的對象(例如文檔)上調用「.db」方法,並對其執行.stats。
例如:
MyBlog.db.stats
對於要Mongoid 3.0.0,Mongoid.master.stats
也應該工作之前verisons。
按對象表示一個具有'include Mongoid :: Document'的類?我的一個Mongoid類被稱爲「Metric」。使用你的建議,我嘗試了'Metric.db.stats',並且我得到了'未定義的方法'db'用於Metric:Class'。我也嘗試過一個實例 - 同樣的問題。與嘗試'Mongoid.default_session'一樣。看起來沒有'db'方法。我使用的是Mongoid 3.0.10。 –
'Mongoid.default_session'現在已被棄用,但上面的命令仍然有效:只需使用'Mongoid.default_client.command(collstats:'collection_name')' – Alessandro