Nie konkretnie „mangusta”, a przynajmniej jeszcze nie w chwili pisania. Powłoka MongoDB od wydania 2.6 faktycznie używa "interfejsu API operacji zbiorczych" "pod maską", tak jak w przypadku wszystkich ogólnych metod pomocniczych. W swojej implementacji najpierw próbuje to zrobić, a jeśli zostanie wykryty serwer starszej wersji, to istnieje „awaria” starszej implementacji.
Wszystkie metody mangusty „obecnie” wykorzystują „starszą” implementację lub odpowiedź na temat zapisu oraz podstawowe metody „legacy”. Ale jest .collection
akcesor z dowolnego modelu mangusty, który zasadniczo uzyskuje dostęp do „obiektu kolekcji” z bazowego „natywnego sterownika węzła”, na którym sam jest zaimplementowany:
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
});
});
Głównym haczykiem jest to, że "metody mangusty" są w rzeczywistości świadome, że połączenie może jeszcze nie zostać nawiązane i "kolejka", dopóki nie zostanie zakończone. Natywny sterownik, w którym się „zagłębiasz”, nie uwzględnia tego rozróżnienia.
Więc naprawdę musisz mieć świadomość, że połączenie jest nawiązywane w jakiś sposób lub w formie. Ale możesz używać natywnych metod sterowników, o ile uważasz na to, co robisz.