2015-02-18 2 views
1

Я пытаюсь использовать функцию TTL в оболочке mongo, но я не могу заставить ее работать. Я проверил все три раза, используя documentation.Документы, не истекающие с использованием TTL в mongodb 2.6.7

Вот что я сделал:

MongoDB shell version: 2.6.7 
connecting to: test 

> db.streamers.getIndexes() 
[ 
     { 
       "v" : 1, 
       "key" : { 
         "_id" : 1 
       }, 
       "name" : "_id_", 
       "ns" : "test.streamers" 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "room" : 1 
       }, 
       "name" : "room_1", 
       "ns" : "test.streamers", 
       "background" : true, 
       "safe" : null 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "lastAlive" : 1 
       }, 
       "name" : "lastAlive_1", 
       "ns" : "test.streamers", 
       "expiresAfterSeconds" : 60, 
       "background" : true, 
       "safe" : null 
     } 
] 

> db.streamers.insert({ _id: "hello", room: "yop", lastAlive: new Date() }) 
WriteResult({ "nInserted" : 1 }) 

[ждет некоторое время здесь ...]

> db.streamers.find({ _id: "hello" }) 
{ "_id" : "hello", "room" : "yop", "lastAlive" : ISODate("2015-02-18T13:03:02.836Z") } 

> new Date() 
ISODate("2015-02-18T13:50:50.403Z") 

Итак, ясно, документ не удаляется даже после ожидания в течение более чем час. db.currentOp() возвращает пустой массив.

Это среда для разработчиков, поэтому mongodb находится в автономной конфигурации с настройками по умолчанию. GetParameter на ttlMonitorEnabled возвращает true, так что это тоже хорошо.

Что здесь не так?

ответ

1

В вашем создании индекса была опечатка.

Установка expiresAfterSeconds должна быть expireAfterSeconds.

+0

Большое спасибо NoOutlet, я сходил с ума от этого :-) – Tug

Смежные вопросы