В MongoDB 3.4 (и все еще в 3.6 в соответствии с документацией) методы collection.aggregate([...])
возвращают курсор. Тогда мы могли бы сделать collection.aggregate([...]).toArray()
или .forEach()
. И получить или перебрать массив результатов.
Начиная с версии 3.6 (следует отметить, что теперь требуются параметры cursor
, которые не указаны в документе), следующая команда:
collection.aggregate(
[...],
{ cursor: { batchSize: 10 } }
)
Возвращает объект с этой формой:
{
"cursor": {
"firstBatch": [...],
"id",
"ns"
},
"ok": 1,
"$clusterTime": {...},
"operationTime": Timestamp(1525344553, 1)
}
Больше нельзя перебирать все результаты, и collection.aggregate([...]).toArray()
не является функцией.
А нашел несколько вопросов по этому поводу, но ничего по-настоящему актуального.
Документ действительно устарел, и я даже не уверен, что это ожидаемое поведение.
Примечание: я запускаю его в mongoshell, но также столкнулся с этими проблемами с последним драйвером узла.