Есть пара вещей, которые нужно проверить:
- Вы просто следовали документам до буквы T и пытались создать индекс для поля
status
, которого на самом деле нет в ваших документах? (нужно хотя бы спросить...)
- Поле
status
содержит ТОЛЬКО dates
? Теоретически его можно смешивать, но только документы с типом даты будут рассматриваться на предмет истечения срока действия.
- Вы проверили индексы своей коллекции, чтобы убедиться, что индекс был создан правильно?
Чтобы проверить индекс из консоли, выполните: db.collection.getIndexes()
. Если индекс был создан успешно, дважды проверьте наличие соответствующих полей status
в ваших документах и правильность дат.
Добавление одного индекса не создает для вас поле даты — вам нужно будет добавить его в документы или использовать существующее поле даты, которое не является частью какого-либо другого индекса.
Также обратите внимание, из документов:
Срок действия индексов TTL истекает путем удаления документов в фоновой задаче, которая запускается каждые 60 секунд.
Итак, если у вас есть срок действия 120 second
, имейте в виду, что, возможно, документы могут оставаться в течение 120 seconds
до 179 seconds
, плюс-минус, в зависимости от того, когда срок действия документа истек и фоновая задача выполнялась в последний раз.
редактировать: Как отмечено в комментариях, саму коллекцию нельзя удалить на основе индекса TTL, срок действия индекса истекает только для документов в коллекции.
person
kmfk
schedule
16.08.2013