给我一个下面代码的解释,对于mongoose中的批量upsert

时间:2017-11-29 19:20:45

标签: node.js mongoose

我在节点中使用批量upsert进行了很多插入,我从相关链接bulk upsert获得了一些代码引用,这就是代码

  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
        });

 });

并且代码没有错,但我仍然不了解下面的一些代码

if ( counter % 1000 == 0 )
            bulk.execute(function(err,result) {             
                bulk = Sample.collection.initializeOrderedBulkOp();
            });

这种情况的目的是什么? if ( counter % 1000 == 0 )

1 个答案:

答案 0 :(得分:0)

评估counter是否为1,000的倍数。更准确地说,评估counter / 1000是否等于0。请参阅Arithmetic Operators

由于此脚本正在执行批量操作,因此它只执行1,000个批次。这种情况强制执行。