Мы предполагаем, что у вас есть created_at или подобное поле в вашем документе, в котором указано время, когда оно было вставлено или иным образом изменено, в зависимости от того, что для вас важно.
Вместо того, чтобы перебирать результаты, вы можете посмотреть параметр multi в update< /strong>, чтобы применить изменения ко всем документам, соответствующим вашему запросу. Установка времени, в которое вы хотите заглянуть, должна быть довольно простой.
В синтаксисе оболочки, который должен быть почти таким же, как у драйвера:
db.collection.update({
created_at: {$lt: time },
state: oldstate
},
{$set: { state: newstate } }, false, true )
Первый false предназначен для upserts, что не имеет никакого смысла в этом использовании, а второй true обозначает multi обновление документа.
Если документы действительно будут недолговечными и впоследствии они вам больше не понадобятся, вы можете рассмотреть закрытые коллекции. У вас может быть опция total size или time to live для них, и естественный порядок вставки благоприятствует обработке записей в очереди.
person
Neil Lunn
schedule
06.02.2014