#python #mongodb #mongodb-query
#python #mongodb #mongodb-запрос
Вопрос:
У меня есть требование удалить записи из моей коллекции mongodb за 24 часа до настоящего времени.у меня есть такие записи, как
{
"_id" : ObjectId("53993f67ccbc960c7d05b74d"),
"userName" : "krishna",
"countryCode" : "91",
"countryName" : "India",
"mobileNumber" : "99143xxxxx",
"name" : "Krishna",
"password" : "aXRvbkAxMjM=",
"registeredOn" : ISODate("2014-06-12T05:49:27.970Z"),
}
{
"_id" : ObjectId("53993f67ccbc960c7d05b74e"),
"userName" : "mulagala",
"countryCode" : "91",
"countryName" : "India",
"mobileNumber" : "99122xxxxx",
"name" : "Krishna",
"password" : "aXRvbkAxMjM=",
"registeredOn" : ISODate("2014-06-16T05:49:27.970Z"),
}
Теперь я хочу удалить запись, которая зарегистрирована за 24 часа до настоящего времени.Как удалить его из python.Заранее спасибо!
Комментарии:
1. Вы предпринимали какие-либо попытки написать код для этого самостоятельно?
2. @Ffisegydd, да, я вызываю поток каждые 10 минут для проверки, но я не уверен, как проверить условие для проверки 24 часов
3. Можете ли вы предоставить, какой код у вас есть на данный момент?
Ответ №1:
Ну, вы можете подойти к этому с помощью запроса и периодически запускать его:
collection.remove({
'registeredOn': { '$lte': datetime.now() - timedelta( hours=24 ) }
})
Или вы могли бы посмотреть на индексы TTL. Сервер mongodb периодически проверяет их каждые несколько минут, не кодируя ничего дополнительного:
db.collection.ensureIndex( { "registeredOn": 1 }, { expireAfterSeconds: 86400 } )
Так что, если вы можете заставить это работать на вас, и вам не нужно никакого ручного управления, это, вероятно, хороший подход для вашего приложения.