mongo普通语句,只能实现全局批量更新,那么怎么实现批量实现数据呢?

mongo原生方式:

参考MongoDB Bulk批量操作 - MongoDB教程 - 一点教程

Bulk() — MongoDB Manual

使用initializeUnorderedBulkOp

var HexagonCasterNft = new Mongo.Collection("my_collection");
var bulkOps = HexagonCasterNft.rawCollection().initializeUnorderedBulkOp();

// mount是主键  mountArr,addressArr
addressArr.forEach(function (addressItem, index) {
		                    	
	bulkOps.find( { mount: mountArr[index] } ).update( { $set: {"userAddress":addressItem, "nftCreateTime": new Date().getTime()} } );
})

if (addressArr.length > 0) {
	// 批量更新
	bulkOps.execute(function(err, result) {
	    if (!err) {
		    console.log("批量更新成功");
	    } else {
		    console.log("批量更新失败");
	    }
									
    });
}

mongoose方式:

var bulkOps = [];
mountArr.forEach(function (item) {
	let updateMsg = {
	    'updateOne': {
	        'filter': {'mount': item},
	        'update': {'mount': item.mount, "activeDayNum":newActiveDayNum, "updateTime": new Date().getTime()},
	        'upsert': true,
	    }
	};
	bulkOps.push(updateMsg);
})

if (bulkOps.length > 0) {
	// 批量更新
	PasActiveDay.bulkWrite(bulkOps).then( bulkWriteOpResult => {

	}).catch( err2 => {

	});
} 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐