Sto cercando di aggregare i dati dalla mia raccolta Mongo per produrre alcune statistiche per FreeCodeCamp creando un file json di grandi dimensioni dei dati da usare in seguito.Mongo aggregation e MongoError: eccezione: BufBuilder ha tentato di crescere() in 134217728 byte, oltre il limite di 64 MB
Sto correndo nell'errore nel titolo. Non sembrano esserci molte informazioni su questo, e gli altri post qui su SO non hanno una risposta. Sto usando l'ultima versione di MongoDB e dei driver.
Sospetto che esista un modo migliore per eseguire questa aggregazione, ma funziona correttamente su un sottoinsieme della mia raccolta. La mia collezione completa è ~ 7 GB.
che sto eseguendo lo script tramite node aggScript.js > ~/Desktop/output.json
Ecco il codice in questione:
MongoClient.connect(secrets.db, function(err, database) {
if (err) {
throw err;
}
database.collection('user').aggregate([
{
$match: {
'completedChallenges': {
$exists: true
}
}
},
{
$match: {
'completedChallenges': {
$ne: ''
}
}
},
{
$match: {
'completedChallenges': {
$ne: null
}
}
},
{
$group: {
'_id': 1, 'completedChallenges': {
$addToSet: '$completedChallenges'
}
}
}
], {
allowDiskUse: true
}, function(err, results) {
if (err) { throw err; }
var aggData = results.map(function(camper) {
return _.flatten(camper.completedChallenges.map(function(challenges) {
return challenges.map(function(challenge) {
return {
name: challenge.name,
completedDate: challenge.completedDate,
solution: challenge.solution
};
});
}), true);
});
console.log(JSON.stringify(aggData));
process.exit(0);
});
});
la funzione aggregateCursor è stata rimossa Il vecchio.il metodo di aggregazione() ora ha diviso personalità: vecchie varargs di ops gasdotti una serie di ops gasdotti come primo argomento, secondo "Opzioni" argomento '' '(come ad esempio {allowDiskUsage: true} )' '' – Benoit