2015-02-21 3 views
0

Может ли кто-нибудь увидеть, что я делаю неправильно в следующем коде? У меня есть коллекция, в которой есть 100K документов. Я запускаю следующий код, и цикл forEach только итерации выполняется один раз. Это, несмотря на то, что когда я подсчитываю количество документов перед запуском forEach, я знаю, что в курсоре есть 100K.В MongoDB цикл foreach() повторяется только один раз

Почему forEach работает один раз, а затем выходит? Вот код:

// connect to the database 
conn = new Mongo(); 
db = conn.getDB("photosharing"); 

var isThere = null; 
var orphans = 0; 
var imageNumber = 0; 
var numOfImages = 0 
var cursor = db.images.find(); 
var cursorFound = cursor.count(); 
cursor.forEach(function(doc){ 
    numOfImages=+1; 
    imageNumber = doc._id; 
    isThere = db.albums.find({images : imageNumber}); 

    if(!isThere){ 
     orphans=+1; 
    } 
}); 

ответ

0

Попробуйте

+=1 

вместо этого

=+1 

Ваш цикл работает. Вы просто перепрограммируете вывод на 1 каждый прогон.

+0

Алекс - спасибо, я должен был это увидеть. – Nuhuxi

+0

Рад помочь. Такие вещи, как правило, труднее всего увидеть. –

+0

Эй, я имел в виду вернуться к тебе. Спасибо, что поймал это. REAL проблема с этим кодом: if (! IsThere) ... Мое предположение заключалось в том, что если курсор не имеет каких-либо документов в нем, он будет оцениваться как null. Au contrar! haha nope .. Я изменил его, чтобы использовать count(), а затем проверил, было ли количество отсчетов равным нулю, Это привело меня туда, куда я хотел пойти. – Nuhuxi

Смежные вопросы