mongodb фильтрует документы, используя значения из другой коллекции

#mongodb

#mongodb

Вопрос:

У меня есть две коллекции, обе с ~ 1 миллионом документов.

Я хочу пометить документы в col1, если они существуют в col2:

 db.col1.find().forEach(function(c1){
    var c2=db.col2.find(a:c1.a);
    if (c2!=null) {
        c1.mark=true;
        db.col1.save(c1);
    }
});
  

Похоже, что приведенный выше скрипт не проходит через все документы, поэтому я обновляю только несколько (~ 50). Чего мне здесь не хватает?

Ответ №1:

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

Комментарии:

1. Спасибо. Можете ли вы дать мне пример?