Это потому, что ваш db.collection.find({test: "test1"}).count()
возвращает число, так как вы видите, что вы получаете 13
, так как это число, которое вы не можете сделать .forEach
для него. Так как forEach
будет работать только с массивами, что подразумевает итерацию каждого элемента в массиве для выполнения некоторой операции.
Пример: - [1,2,3].forEach(i => console.log(i))
будет протоколировать 1
, 2
, 3
. Но если вы передадите что-либо, кроме массива, в .forEach
, то вы получите ошибку именно того, что получаете.
Также вы можете изменить свой запрос и код, так что вы можете попробовать это:
db.collection('collection').count({ test: "test1" }, (err, counter) => {
if (err) {/** return from here */ }
assert.equal(null, err);
console.log('Total no.of docs matched ::', counter)
resultArray.push(counter); // What is this resultArray, anyway it has to be an array ?
}, function () {
client.close();
console.log("resultArray", resultArray);
});
На всякий случай, если вам нужны все документы и их количество, просто наберите .find()
:
db.collection('collection').find({ test: "test1" }).toArray((err, resp) => {
if (err) {/** return from here */ }
assert.equal(null, err);
/** Here resp will be an array of objects or [] */
if (resp.length) {
resultArray.concat(resp)
console.log('Total no.of docs matched ::', resp.length)
}
console.log('No docs found for given filter');
}, function () {
client.close();
console.log("resultArray", resultArray);
});