wya*_*imo 20
MongoDB(2.2及更高版本)实际上有一个特殊的索引类型,允许您在文档上指定TTL(请参阅http://docs.mongodb.org/manual/tutorial/expire-data/).数据库为您删除过期的文档 - 无需cron作业或任何其他内容.
Mongoid支持此功能如下:
index({created_at: 1}, {expire_after_seconds: 1.week})
Run Code Online (Sandbox Code Playgroud)
该created_at字段必须包含日期/时间信息.包含Mongoid::Timestamps在您的模型中以免费获得.
更新:
如果只想使文档的子集过期,则可以创建仅为该子集填充的特殊日期/时间字段.索引字段中没有值或非日期/时间值的文档永远不会过期.例如:
# Special date/time field to base expirations on.
field :expirable_created_at, type: Time
# TTL index on the above field.
index({expirable_created_at: 1}, {expire_after_seconds: 1.week})
# Callback to set `expirable_created_at` only for guest roles.
before_create :set_expire, if: "role == :guest"
def set_expire
self.expirable_created_at = Time.now
return true
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |