2016-05-25 3 views
0

Я только начал использовать Mongodb. Застрял.автоматическое удаление документов в mongodb

Так у меня есть коллекция с полями:

_id
STARTDATE (длинный)
ENDDATE (длинный)
имя

Теперь я хочу, чтобы автоматически удалять документы, которые старше определенной даты.
Я создал индекс TTL для поля startDate, установить время истечения через 2 минуты и проверить, истекает ли оно. При вставке документа с startDate в качестве isoDate он работал и истек.

..insert({startDate:newDate()})--> Got deleted after 2 secs. 

Мой вопрос заключается в том, какие данные ранее были установлены, имеют начальную дату как длинное значение. Так как это будет работать?

ответ

0

Показатели TTL работают только на isoDate. Запустите обновление, чтобы преобразовать ваши longs в isoDates или просто удалить их вручную (по-видимому, все, что длиннее, будет в любом случае старше вашего обрезания или скоро).

+0

Спасибо, Пол! Похоже, что мне нужно удалить документы на основе их создания Date, а не значения startDate. У меня также нет createDate как отдельного поля. Я понимаю, что могу получить Timestamp объекта ObjectId, если хочу получить дату создания документа. Но в документации упоминается, что мы не можем создавать индексы TTL на _id. Я прав? Любое предложение? – Rthp

+0

Если у вас нет такого поля, добавьте его! Обновите свои документы, чтобы добавить поле create_date с помощью метки времени из ObjectId (я никогда не использовал эту функцию, но это имеет смысл), а затем TTL-индекс в create_date. – PaulMcG

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