Я использую MongoDB v3.2, и я использую драйвер native nodejs v2.1. При запуске агрегации трубопровода на больших наборах данных (1mil + документы), я встречая следующее сообщение об ошибке:MongoDB Aggregation Cursor с драйвером NodeJS
'aggregation result exceeds maximum document size (16MB)'
Вот мой код агрегация трубопровода:
var eventCollection = myMongoConnection.db.collection('events');
var cursor = eventCollection.aggregate([
{
$match: {
event_type_id: {$eq: 89012}
}
},
{
$group: {
_id: "$user_id",
score: {$sum: "$points"}
}
},
{
$sort: {
score: -1
}
}
],
{
cursor: {
batchSize: 500
},
allowDiskUse: true,
explain: false
}, function() {
});
Вещи, которые я пробовал:
//Using cursor event listeners. None of the on listeners seem to work. Always get error about 16mb.
cursor.on("data", function (data) {
console.log("Some data: ", data);
});
cursor.on("end", function (data) {
console.log("End of data: ", data);
});
//Using forEach. Which I thought would allow for >16mb because it's used in conjunction with the batchSize and cursor.
cursor.forEach(function (item) {
})
Я видел в других ответах (How could I write aggregation without exceeds maximum document size?), что мне нужно, чтобы результаты были возвращены курсором, так как я правильно это сделал? Я просто не могу заставить его работать. Любые предложения о том, что должно быть в пакете?
Я использую собственный пакет mongodb - https://github.com/mongodb/node-mongodb-native для проекта nodejs, а не командной строки mongo.
Параметр '.forEach()' не имеет места здесь, так как «агрегация курсор» на самом деле просто [узел «поток»] (https://nodejs.org/api/stream. html), и поэтому только событие «данных» на самом деле что-то делает. Однако, если именно так настроен ваш код, это предполагает, что у вас есть экземпляр сервера MongoDB 2.4 или ниже, который, конечно же, не поддерживает ответ «курсор/поток». Поэтому я предлагаю вам обновить сразу, так как теперь это будет «очень старый» релиз. –
http://stackoverflow.com/questions/29644587/how-could-i-write-aggregation-without-exceeds-maximum-document-size –
Я проверил мой экземпляр MongoDB версии 3.2.1 – mikeyaa