Как получить за 24 часа до записей из mongodb с помощью python.?

#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 } )
  

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