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批量操作的目的!