Spring Data MongoDB使用Upsert批量写入-许多查询

时间:2019-03-04 12:53:17

标签: java spring mongodb spring-data spring-data-mongodb

我正在使用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做同样的事情?

0 个答案:

没有答案