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

Wstaw wsadowy MongoDB i NodeJs

Aby korzystać z bazowego interfejsu API operacji zbiorczych w Mongoose, powinieneś mieć do niego dostęp za pośrednictwem pliku .collection właściwość z modelu mangusty. Przed użyciem interfejsu API poczekaj, aż Mongoose pomyślnie połączy się z bazą danych, ponieważ Mongoose tak naprawdę nie obsługuje obecnie "initializeOrderedBulkOp()", ponieważ nie działa z wewnętrznym systemem buforowania. Więc coś takiego jak następująca implementacja (nie testowana) powinna dać ci pomysł:

var mongoose = require('mongoose'),
    express = require('express'),
    Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/mydb');
var collection1Schema = new Schema({},{ strict: false, collection: 'Collection1' }),    
    MyModel = mongoose.model("MyModel", collection1Schema );

mongoose.set('debug', true);

mongoose.connection.on("open", function (err) {
    if (err) throw err;  
    var bulkUpdateOps = MyModel.collection.initializeUnorderedBulkOp(), 
        counter = 0;

    MyModel.find({}).lean().exec(function (err, docs) {
        if (err) throw err; 

        docs.forEach(function (doc){
            // computations
            var c1, c2, c3, c4, Field8;
            c1 = 10 + (0.03*doc.Field3);
            c2 = (doc.Field2 == 1) ? 1: 0.03;
            c3 = 7 - (doc.Field5.match(new RegExp(".", "g")) || []).length;
            c4 = (doc.Field2 == 1) ? Math.pow(doc.Field, -0.6) : 1;
            Field8 = c1*c2*c3*c4;

            counter++;

            bulkUpdateOps.find({ "_id": doc._id }).updateOne({
                "$set": { "Field8": Field8 }
            });

            if (counter % 500 == 0 ) {
                bulkUpdateOps.execute(function(err, result) {
                    if (err) throw err;  
                    bulkUpdateOps = MyModel.collection.initializeUnorderedBulkOp();
                    console.log(result);
                });
            } 

        });     

        if (counter % 500 != 0 ) {            
            bulkUpdateOps.execute(function(err, result) {
                if (err) throw err;  
                console.log(result);
            });         
        }       
    });

    var app = express();
    app.listen(3000, function () {
        console.log('now listening on http://localhost:3000');
    });
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose/Mongodb:Wyklucz pola z danych wypełnionych zapytań

  2. Mongo 2.6.1 - Nierozpoznana nazwa etapu potoku:„$out”

  3. Generowanie Mongo ObjectId (_id) z niestandardowym czasem?

  4. Jak formatować liczby za pomocą przecinków w SQL?

  5. Zaimplementuj funkcję autouzupełniania za pomocą wyszukiwania MongoDB