我正在使用2.0.0.RC1版本中的spring boot,其中包含mongodb的spring数据。我对数据库的查询数量有问题,并希望使用批量操作将其减少为一个查询。
这是我的代码的一部分:
List<Pair<Query, Update>> queryWithUpdate = dataToUpdate
.stream()
.map(data -> createUpsertOperation(data.getMove(), map))
.collect(Collectors.toList());
mongoOperations.bulkOps(BulkOperations.BulkMode.UNORDERED, SomeNew.class)
.upsert(queryWithUpdate)
.execute();
因此每个查询具有不同的参数以及更新。最后,列表的大小为96个元素。在我的环境中执行上述代码时,我在mongo控制台中注意到,每个Pair ofr查询和更新都是在单独的操作中完成的。
[conn111]更新experiments.core.wells.lineage查询:{ location.some:“ BBBBB”,location.cordinate: “ A2”} planSummary:COLLSCAN更新:{$ addToSet:{世系:{$ each: [{坐标:“ A02”,某些:“ TEST01”}]}}} keysExamined:0 docsExamined:943391 nMatched:0 nModified:0 upsert:1 keysInserted:1 numYields:7387锁:{全局:{获取计数:{r: 14772,w:14772}},数据库:{acquisitionCount:{w:14772}}, 集合:{AccountCount:{w:14772}}} 671ms
但是,我能够使用批量操作编写mongo脚本,以便直接在mongo shell中执行相同的操作。 https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/
是否有机会使用Spring Boot做同样的事情?