mongo普通语句,只能实现全局批量更新,那么怎么实现批量实现数据呢?
mongo原生方式:
参考MongoDB Bulk批量操作 - MongoDB教程 - 一点教程
使用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 => {
});
}