Автоматически удалять документ mongodb после периода бездействия

Мне нужно удалить документы mongodb после определенного периода отсутствия доступа.

У меня есть токен доступа, который я использую для извлечения данных из внешнего источника и сохранения их в моей базе данных.

В моем сеансе я храню идентификатор пользователя, который я могу использовать для получения токена доступа, когда пользователь делает запрос.

Если срок действия моего сеанса истечет, токен доступа, сохраненный в моей базе данных, больше никогда не будет использоваться.

Пользователю будет предложено повторно пройти аутентификацию, и новый токен доступа будет сохранен в базе данных.

Если пользователь явно выходит из системы, я могу легко удалить недействительный токен доступа из базы данных. Но если они никогда не выйдут из системы и срок действия сеанса истечет, запись в базе данных останется на неопределенный срок.

Я подумал об обнаружении истечения срока действия сеанса и запуске функции для удаления связанного токена доступа из моей базы данных, но что, если срок действия сеанса истекает, когда приложение не запущено.

Я думаю, мне нужно какое-то обслуживание, например, задание cron или что-то в моей базе данных, которое будет удалять документы после определенного периода отсутствия доступа,

Как мне это сделать с mongoDB?


person jalbasri    schedule 22.09.2015    source источник
comment
Покажите определение документа того, что вы хотите удалить. Но на самом деле вы должны следовать Срок действия данных из коллекций путем установки TTL, который непосредственно из онлайн-руководства.   -  person Blakes Seven    schedule 22.09.2015
comment
Вы можете хранить lastAccessTime в каждой записи (обновлять ее каждый раз, когда вы к ней обращаетесь), запускать планировщик, который удаляет все записи, lastAccessTime которых больше указанного периода.   -  person Harsh Patel    schedule 22.09.2015
comment
определение документа просто {id: String, accessToken: String}, я не думаю, что TTL - это то, что я ищу, поскольку я хочу, чтобы документ оставался, если к нему регулярно обращаются. Просто удаляется, если он неактивен в течение определенного периода времени. Я рассмотрю планирование заданий в nodejs (я никогда раньше этого не делал) и использую lastAccessTime, как это было предложено HarshPatel.   -  person jalbasri    schedule 22.09.2015


Ответы (1)


Нашел этот вопрос, который отвечает на мой вопрос.

В основном установите TTL и обновите дату создания при доступе к данным для достижения желаемого поведения.

person jalbasri    schedule 22.09.2015
comment
Не могли бы вы поделиться своим решением? - person Vishnu; 17.09.2019