sql >> Databáze >  >> NoSQL >> MongoDB

Dávkové vložení MongoDB a NodeJs

Abyste mohli používat základní API pro hromadné operace v Mongoose, měli byste k němu mít přístup přes .collection vlastnost z modelu mongoose. Před použitím API počkejte, až se mongoose úspěšně připojí k db, protože Mongoose aktuálně nepodporuje „initializeOrderedBulkOp()“, protože nefunguje se svým vnitřním systémem ukládání do vyrovnávací paměti. Takže něco jako následující implementace (netestováno) by vám mělo poskytnout představu:

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. Porovnejte vložený dokument s nadřazeným polem s mongoDB

  2. Vložte hodnotu formuláře (formát json) do databáze pomocí meteoru

  3. Získejte všechna pole a hodnoty hash klíče pomocí redis v uzlu

  4. Jak získat maximální a minimální data ve sbírce dokumentů pomocí balíčku jenssegers/laravel-mongodb?