Может ли кто-нибудь увидеть, что я делаю неправильно в следующем коде? У меня есть коллекция, в которой есть 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;
}
});
Алекс - спасибо, я должен был это увидеть. – Nuhuxi
Рад помочь. Такие вещи, как правило, труднее всего увидеть. –
Эй, я имел в виду вернуться к тебе. Спасибо, что поймал это. REAL проблема с этим кодом: if (! IsThere) ... Мое предположение заключалось в том, что если курсор не имеет каких-либо документов в нем, он будет оцениваться как null. Au contrar! haha nope .. Я изменил его, чтобы использовать count(), а затем проверил, было ли количество отсчетов равным нулю, Это привело меня туда, куда я хотел пойти. – Nuhuxi