Существует определенная задача, которую я хочу выполнить, но я не нахожу никакого конкретного способа сделать это. Допустим, у меня есть приложение, которое используется для отправки писем. Я продолжаю записывать эти письма в коллекции в монго. И используя это приложение, я могу отправить почту прямо сейчас или планировать рассылки на будущее. Структура документов в коллекции, как:Создать условный TTL в mongo
{
'_id' : 123456789,
'to_email' : '[email protected]'
'from_email' : '[email protected]'
'subject': 'some subject'
'type' : '<1 if normal and 2 if scheduled>',
'createdDate' '<date when mail was sent or the request was created>',
'scheduledDate' : '<time for which mail is scheduled>'
.. and many more key-value pairs
}
Поле scheduledDate может быть равен нулю или любой даты, в зависимости от того, если его планируется или нет. Я не хочу хранить данные старше 2 дней, поэтому я создал индекс TTL на 'createdDate' в течение 2 дней. Но я также не хочу удалять строки или запросы, запланированные на будущее. Я искал какой-то условный TTL, но не смог найти такого решения.
Есть ли что-либо в наличии, например условный TTL или любой другой способ сделать itin mongodb.
Я хочу, чтобы создать TTL, который работает как:
if(requestType!=2 and createdDate < -2days)
delete row;
или есть способ, где я могу внести изменения в некоторые документы с использованием любого языка, так что они не получают истек.
EDIT: Я решил это, используя те же значения для scheduleDate и requestDate в случае запланированных писем.
Итак, вы должны добавить индекс, необходимый для его истечения [(Документы)] (https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-at-a-specific-clock-time)? 'db.emails.createIndex ({" expires ": 1}, {expireAfterSeconds: 0})' – luckydonald
Это выглядит корректно для меня: в вашем случае документ будет удален, когда текущая дата будет значением 'expires' поле (дайте или займите минутку). – RikkusRukkus