我正在使用mongojs与我的应用中的mongodb进行互动。
我需要为集合添加TTL支持,使文档每小时删除一次。 以下是我在app start上创建索引的方法:
db.collection.ensureIndex({'createdAt': 1, expireAfterSeconds: 3600})
保存文档时,createdAt
字段将显示为new Date()
。
以下是文档结构在数据库中的外观:
{
"_id" : ObjectId("5425759f73070ab82f6097ca"),
"user" : "bde8349VIO2RpmhE9Rkn3qvQJDYkr589MeWdsopEteQ3OfxQVPxUhLWH0AMiwnypKhquNEG4eA==",
"tags" : [],
"createdAt" : ISODate("2014-09-26T14:18:07.041Z")
}
我检查了数据库中的索引,它们看起来很好:
> db.collection.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "dbname.collection"
},
{
"v" : 1,
"key" : {
"createdAt" : 1,
"expireAfterSeconds" : 3600
},
"name" : "createdAt_1_expireAfterSeconds_3600",
"ns" : "dbname.collection"
}
]
但是所有文档都保留在db中并且不会被删除..有什么想法吗?
谢谢!
答案 0 :(得分:2)
它应该是db.collection.ensureIndex({'createdAt': 1}, {expireAfterSeconds: 3600})
而不是db.collection.ensureIndex({'createdAt': 1, expireAfterSeconds: 3600})
。