У меня есть простая схема, как:MongoDB TTL не вынимая документы
{
_id: String, // auto generated
key: String, // there is a unique index on this field
timestamp: Date() // set to current time
}
Затем я установил индекс TTL, как так:
db.sess.ensureIndex({ "timestamp": 1 }, { expireAfterSeconds: 3600 })
Я ожидаю, что запись в удален через 1 час, но это никогда не удалялся. я щелкнул подробного журнала, и я вижу TTLMonitor бегущего
Tue Sep 10 10:42:37.081 [TTLMonitor] TTL: { timestamp: 1.0 } { timestamp: { $lt: new Date(1378823557081) } }
Tue Sep 10 10:42:37.081 [TTLMonitor] TTL deleted: 0
Когда я бегу, что запрос сам я вижу, все мои записи с истекшим сроком годности возвращаясь:
db.sess.find({ timestamp: { $lt: new Date(1378823557081) }})
...
Любые идеи? Я в тупике.
EDIT - Пример документа ниже
{ "_id" : "3971446b45e640fdb30ebb3d58663807", "key" : "6XTHYKG7XBTQE9MJH8", "timestamp" : ISODate("2013-09-09T18:54:28Z") }
TTLMonitor запускается каждые 60 секунд, поэтому я полагаю, что он должен быть поднят не менее чем на 1 минуту после истечения срока действия. Я никогда не хочу, чтобы никогда (например, прохождение дней, и ничто никогда не удалялось). Существует только 2 индекса - индекс TTL и уникальный индекс, который я указал на ключевое поле. Пример документа в редакторе. Спасибо за вашу помощь. – jckdnk111
Нет, мне интересно, что вы видите, когда вы делаете 'db.sess.find(). Pretty()' - Я просто хочу подтвердить, что поле timestamp есть и не выглядит забавным. Для индексов вы должны сделать 'db.sess.getIndexes()', чтобы подтвердить, что это все индексы, которые есть. – jcollum
О, редактирование не показывалось при первом обновлении, нечетное – jcollum