MongoDB TTL 稀疏索引?
MongoDB TTL sparse index?
你能 TTL 一个稀疏场吗?如果是这样,您是否应该声明 TTL 索引稀疏?像这样?
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 , sparse:"true"} )
> use foo
switched to db foo
> db.foo.createIndex({date: 1}, {expireAfterSeconds: 5, sparse: true})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.foo.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "foo.foo"
},
{
"v" : 1,
"key" : {
"date" : 1
},
"name" : "date_1",
"ns" : "foo.foo",
"expireAfterSeconds" : 5,
"sparse" : true
}
]
> db.foo.insert({date: new Date()})
> db.foo.find()
{ "_id" : ObjectId("5841aeb650b5412e92ebbb9b"), "date" : ISODate("2016-12-02T17:26:14.617Z") }
> db.foo.find()
>
看来这很有效。请注意,根据 documentation ,TTL 操作每 60 秒左右触发一次,因此 expireAfterSeconds: 5 可能需要更长时间。
你能 TTL 一个稀疏场吗?如果是这样,您是否应该声明 TTL 索引稀疏?像这样?
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 , sparse:"true"} )
> use foo
switched to db foo
> db.foo.createIndex({date: 1}, {expireAfterSeconds: 5, sparse: true})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.foo.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "foo.foo"
},
{
"v" : 1,
"key" : {
"date" : 1
},
"name" : "date_1",
"ns" : "foo.foo",
"expireAfterSeconds" : 5,
"sparse" : true
}
]
> db.foo.insert({date: new Date()})
> db.foo.find()
{ "_id" : ObjectId("5841aeb650b5412e92ebbb9b"), "date" : ISODate("2016-12-02T17:26:14.617Z") }
> db.foo.find()
>
看来这很有效。请注意,根据 documentation ,TTL 操作每 60 秒左右触发一次,因此 expireAfterSeconds: 5 可能需要更长时间。