MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać nieuporządkowanego wstawiania zbiorczego z Mongoskin?

Możesz to zrobić, ale musisz zmienić konwencje wywoływania, aby to zrobić, ponieważ tylko formularz „callback” faktycznie zwróci obiekt kolekcji, z którego .initializeUnorderedBulkOp() można wywołać metodę. Istnieją również pewne różnice w użytkowaniu w zależności od sposobu, w jaki to działa:

var dbURI = urigoeshere;
var db = mongo.db(dbURI, {safe:true});
db.collection('collection',function(err,collection) {
    var bulk = collection.initializeUnorderedBulkOp();
    count = 0;

    for (var i = 0; i < 200000; i++) {
        bulk.insert({number: i});
        count++;

        if ( count % 1000 == 0 )
            bulk.execute(function(err,result) {
               // maybe do something with results
               bulk = collection.initializeUnorderedBulkOp(); // reset after execute
            });      

    });

    // If your loop was not a round divisor of 1000
    if ( count % 1000 != 0 )
        bulk.execute(function(err,result) {
          // maybe do something here
        });
});

Tak więc rzeczywiste metody "Bulk" same w sobie nie wymagają wywołań zwrotnych i działają dokładnie tak, jak pokazano w dokumentacji. Wyjątek to .execute() który faktycznie wysyła zestawienia do serwera.

Chociaż sterownik nieco to rozwiąże, prawdopodobnie nie jest dobrym pomysłem ustawianie w kolejce zbyt wielu operacji przed wywołaniem execute. To w zasadzie gromadzi się w pamięci i chociaż sterownik wyśle ​​tylko partie 1000 na raz (jest to limit serwera, a także cała partia poniżej 16 MB), prawdopodobnie chcesz mieć tutaj trochę więcej kontroli, przynajmniej ogranicz użycie pamięci.

To jest punkt testów modulo, jak pokazano, ale jeśli pamięć do budowania operacji i możliwie bardzo duży obiekt odpowiedzi nie stanowią dla ciebie problemu, możesz po prostu kolejkować operacje i wywołać .execute() raz.

„Odpowiedź” ma taki sam format, jak podano w dokumentacji BulkWriteResult.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przewodnik po zapytaniach w Spring Data MongoDB

  2. Czy Mongoose zapewnia dostęp do poprzedniej wartości właściwości w pre('save')?

  3. Konwertuj DBObject na POJO za pomocą sterownika Java MongoDB

  4. MongoDB countDocuments()

  5. Transakcje Spring Data MongoDB