2012-08-08 74 views
3

正如mongodb網站所述,我可以使用.ensureIndex({state:1},{expireAfterSeconds:10})過期記錄。但是如何從軌道上實現呢?謝謝TTL for mongoid in rails

+0

你有什麼嘗試嗎? – 2012-08-08 07:46:57

+0

請注意:TTL只有2.2,當然我們不知道你正在使用的是什麼Mongo版本,但仍然...還有大多數驅動程序沒有更新到2.2 API,我不確定Rubys函數是如何實現的,你是什麼意思通過:'但如何可以從軌道實施? '? – Sammaye 2012-08-08 08:14:24

回答

3

假設您使用的是MongoDB 2.2,那麼Ruby驅動程序應該已經通過Collection的create_index()ensure_index()方法支持這一點。索引選項直接傳遞到服務器。 API文檔中的下劃線符號在內部翻譯爲方便(例如:drop_dups設置:dropDups選項)。你應該能夠做到:

@collection.create_index([['state', Mongo::ASCENDING]], :expireAfterSeconds => 10) 

對於mongoid具體而言,它看起來像你可以通過索引的定製選項,以及每this documentation

+0

實際上我們不能只在選項中通過expireAfterSeconds,有效的選項類型是:https://github.com/mongoid/mongoid/blob/master/lib/mongoid/indexes/validators/options.rb#L10 – 2012-08-13 14:11:02

+0

我假設mongoid會想要堅持由駕駛員定義的下劃線的假名。與其等待'expire_after_seconds'出現,也許你可以從mongoid訪問原始集合類並自己運行命令? – jmikola 2012-08-13 14:15:59

+0

是的,這正是我所做的,謝謝你的建議 – 2012-08-22 15:12:37