mongoDB 数据库批量操作 BulkOperations

mongoDB | 2020-02-14 15:12:23

mongoDB也很强大了,可以批量修改,批量新增,就是不能批量upsert, 怀念mysql的 on duplicate key update。

既然upsert不能批量传参数,那么总有 mysql 的 executeBatch 批量提交操作吧。答案是肯定的。

1.mongoDB批量insert插入操作案例

testModel m1 = new testModel("m1", 10);
testModel m2 = new testModel("m2", 20);
 
 // BulkMode.UNORDERED:表示并行处理,遇到错误时能继续执行不影响其他操作;BulkMode.ORDERED:表示顺序执行,遇到错误时会停止所有执行
 BulkOperations ops = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "test");
 ops.insert(m1);
 ops.insert(m2);
 
 // 执行操作
 ops.execute();

 

2.mongoDB批量upsert新增修改操作案例

List<String> resultList = new ArrayList<>();
List<Pair<Query, Update>> updateList = new ArrayList<>();
BulkOperations operations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, collectionName);

dataList.forEach(data -> {
	Query query = new Query(Criteria.where("project").is(contentObject.getString("projectId")));
			Update update = new Update().set("timeStamp", new Date());
			Pair<Query, Update> updatePair = Pair.of(query, update);
			updateList.add(updatePair);
});
	
operations.upsert(updateList);
operations.execute();

mongoDB纵欲可以 批量upsert了,这也是为什么我要学习mongo批量操作的目的!

 

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号