MongoDB的批量查詢條件進行批量更新數據

  今天遇到這樣一個場景:在Java中批量更新MongoDB數據,不過每次更新的條件有不同,那如何有效地進行更新操做呢?數據庫

       剛開始的時候,我是想到循環批量更新操做,即每一種查詢條件進行一次批量更新過程,這樣的思路就是多個查詢條件就須要進行屢次的批量更新,帶來的弊端是跟數據庫的鏈接交互太頻繁了,消耗的時間都浪費在這些過程當中了;那麼今天咱們能夠經過另一種方式來避免這種負面影響,只須要和數據庫創建一次鏈接便可完成批量條件批量更新。spa

   (一)總體思路code

  一、首先,將須要更新的數據存在一個List集合中對象

  二、而後,經過MongoTemplate的bulkOps方法返回的對象進行批量查詢條件進行批量更新數據blog

  (二)邏輯代碼it

MongoTemplate mongoTemplate = new MongoTemplate (); String collectionName = "testCollection"; List<Object> updateEntityList = new ArrayList<>(); List<Pair<Query, Update>> updateList = new ArrayList<>(); BulkOperations operations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, collectionName); updateEntityList .forEach(data -> { Query query = new Query(); // 須要根據具體的業務場景來添加查詢條件
            Update update = new Update(); // 須要根據具體的業務場景經過newEntityList最新數據更新oldEntityList的某些數據
 update.set(key1, value1); update.set(key2, value2); update.set(key3, value3); Pair<Query, Update> updatePair = Pair.of(query, update); updateList.add(updatePair); }); operations.updateMulti(updateList); BulkWriteResult result = operations.execute();

  (三)小結io

  這裏主要用到了MongoDB的bulkOps方法,能夠適用於不一樣的條件下批量操做。class

 

------20200113勉test

相關文章
相關標籤/搜索