2016-12-02 2 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 시간이 더 오래 걸릴 수 있습니다.