sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose - RangeError:Maksimal opkaldsstabelstørrelse overskredet

Jeg havde det samme problem, og jeg begyndte at grave gennem mongoose-kildekoden (version 3.8.14). Til sidst førte det mig til denne linje inden for

  • mongoose/node_modules/mongodb/lib/mongodb/collection/core.js -> indsæt (...) -> insertWithWriteCommands (...) ->
  • mongoose/node_modules/mongodb/lib/mongodb/collection/batch/ordered.js -> bulk.insert(docs[i]) -> addToOperationsList(...) -> bson.calculateObjectSize(dokument, falsk);

    var bsonSize =bson.calculateObjectSize(dokument, falsk);

Tilsyneladende kalder dette BSON.calculateObjectSize, som kalder calculateObjectSize, som derefter gentager sig uendeligt. Jeg var ikke i stand til at grave så langt ind i, hvad der forårsagede det, men regnede med, at det kunne have noget at gøre med mongoose wrapper-bindingsfunktionerne til skemaet. Da jeg indsatte rå data i mongoDB, da jeg besluttede at ændre bulk-indsættelsen i mongoose til et standard javascript-objekt, forsvandt problemet, og masseindsættelser skete korrekt. Du kan muligvis gøre noget lignende.

Grundlæggende gik min kode fra

//EDIT: mongoose.model needs lowercase 'm' for getter method

var myModel = mongoose.model('MyCollection');
var toInsert = myModel();
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});

til

//EDIT: mongoose.model needs lowercase 'm' for getter method

var myModel = mongoose.model('MyCollection');
var toInsert = { //stuff in here 
   name: 'john',
   date: new Date()
};
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});


  1. Find mongoDB-poster i batches (ved hjælp af mongoid rubin-adapter)

  2. Kom godt i gang med PHP og MongoDB

  3. MongoDB:ubetingede opdateringer?

  4. Udfyld en mangustmodel med et felt, der ikke er et id