У меня есть документ со многими объектами и несколькими агрегатными процессорами, которые работают на них. Допустим, что имя документа объектов - это объекты. Для одного процессора я создал другой документ под названием ProcessedObjects, в котором каждый экземпляр является объектом, который содержит одно поле «processObjectPtr», которое является ссылкой на объект.Документы списка MongoDB не в другом списке
Я хотел бы запустить следующий основной цикл:
for all objects that haven't been processed yet:
1 - process object
2 - add object to processed object list
ту часть, которую я не знаю, как это сделать в MongoDB, чтобы получить список объектов, которые не были обработаны еще. Теоретически я мог бы пометить сам объект как обработанный, добавив к нему другое поле, но когда у меня будет много процессоров, которые будут уродливыми, именно поэтому я предпочитаю хранить «список обработанных объектов» в отдельном документе.
Есть ли элегантный способ сделать это, или мне нужно добавить обработанные метаданные к реальным объектам? Я использую mongoengine, но любой ответ будет выполнен.
Спасибо!
Вы должны попробовать Карты, чтобы добиться этого. См. Пример здесь http://stackoverflow.com/questions/8772936/get-data-from-collection-b-not-in-collection-a-in-a-mongodb-shell-query –
В итоге я добавил список обработанных флагов для моих объектов, поэтому каждый процессор может отметить (через флаг), что он уже обработал этот объект, а также запросить, какие объекты не имеют флага. – Noam
@Noam: Поскольку вы решили свой собственный вопрос, я думаю, вы также можете опубликовать это как ответ ;-) – Stennie