2016-12-02 113 views
-1

你可以TTL稀疏字段嗎?如果是這樣,你應該宣佈TTL指數稀疏嗎?像這樣?MongoDB TTL稀疏索引?

db.eventlog.createIndex({ "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 , sparse:"true"}) 
+0

一個更好的問題是:索引稀疏時它會更好嗎?在閱讀關於TTL和稀疏索引的文檔後,我不清楚:/ – mjaskowski

回答

1
> 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可能需要更長的時間。