我在节点中使用批量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 )
?
答案 0 :(得分:0)
评估counter
是否为1,000的倍数。更准确地说,评估counter / 1000
是否等于0
。请参阅Arithmetic Operators。
由于此脚本正在执行批量操作,因此它只执行1,000个批次。这种情况强制执行。