MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Масово прехвърляне в MongoDB с помощта на mongoose

Не в "мангуст" конкретно, или поне не още към момента на писане. Обвивката на 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
        });

 });

Основната уловка е, че „методите на мангуста“ всъщност осъзнават, че връзката може да не е направена още и „на опашка“, докато това не приключи. Родният драйвер, в който "ровите", не прави това разграничение.

Така че наистина трябва да сте наясно, че връзката е установена по някакъв начин или форма. Но можете да използвате методите на собствения драйвер, стига да сте внимателни с това, което правите.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Създавайте, четете, актуализирайте, изтривайте данни с помощта на Node.js - Mongoose

  2. mongodb 3.4.3 Отказано разрешение wiredtiger_kv_engine.cpp 267 грешка с ubuntu 16

  3. MongoDB $round

  4. Mongo DB Java 3.x драйвер - групиране по заявка

  5. MongoDB $dateFromString