Не в "мангуст" конкретно, или поне не още към момента на писане. Обвивката на MongoDB от версия 2.6 всъщност използва "API за групови операции" "под капака", така да се каже, за всички общи помощни методи. В своята реализация той се опитва да направи това първо и ако бъде открит сървър с по-стара версия, тогава има „резервно“ към наследената реализация.
Всички методи на mongoose "в момента" използват "наследената" реализация или отговора за загриженост при запис и основните наследени методи. Но има .collection
Accessor от всеки даден модел на mongoose, който по същество осъществява достъп до "обекта на колекцията" от основния "драйвер на възел", на който е внедрен mongoose:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var sampleSchema = new Schema({},{ "strict": false });
var Sample = mongoose.model( "Sample", sampleSchema, "sample" );
mongoose.connection.on("open", function(err,conn) {
var bulk = Sample.collection.initializeOrderedBulkOp();
var counter = 0;
// representing a long loop
for ( var x = 0; x < 100000; x++ ) {
bulk.find(/* some search */).upsert().updateOne(
/* update conditions */
});
counter++;
if ( counter % 1000 == 0 )
bulk.execute(function(err,result) {
bulk = Sample.collection.initializeOrderedBulkOp();
});
}
if ( counter % 1000 != 0 )
bulk.execute(function(err,result) {
// maybe do something with result
});
});
Основната уловка е, че „методите на мангуста“ всъщност осъзнават, че връзката може да не е направена още и „на опашка“, докато това не приключи. Родният драйвер, в който "ровите", не прави това разграничение.
Така че наистина трябва да сте наясно, че връзката е установена по някакъв начин или форма. Но можете да използвате методите на собствения драйвер, стига да сте внимателни с това, което правите.