Ответ 1
Вам нужно использовать метод each()
, а не forEach()
. forEach() собирается перебирать каждый документ в пакете - поскольку вы обнаружили, что это значение по умолчанию равно 101. each() будет перебирать каждый документ в курсоре. Из документации:
каждый
Итерации по всем документам для этого курсора. Как и в случае {cursor.toArray}, не все элементы будут повторяться, если это курсор был ранее доступен. В этом случае {cursor.rewind} может для reset курсора. Однако, в отличие от {cursor.toArray}, курсор будет содержать только максимальные элементы размера партии при любом заданном если задан размер партии. В противном случае вызывающий отвечает для обеспечения того, чтобы весь результат мог соответствовать памяти.
http://mongodb.github.io/node-mongodb-native/api-generated/cursor.html
Пример кода:
// Grab a cursor
var cursor = collection.find();
// Execute the each command, triggers for each document
cursor.each(function(err, item) {
// If the item is null then the cursor is exhausted/empty and closed
if(item == null) {
// Show that the cursor is closed
cursor.toArray(function(err, items) {
assert.ok(err != null);
// Let close the db
db.close();
});
};
});