mongoDB學習之批量操作


1   批量forEach相關

  mongoDB  api地址:https://docs.mongodb.com/manual/reference/method/cursor.forEach/

  1.1   更新id在 ids 中的 “is_delete” 字段的值為 1 

      var ids=['1','2','3'];

      ids.forEach(

        function(item){

          db.getCollection('lw-media-source').update(
            {"id":item},
            {"$set":{ "is_delete" : NumberInt(1)}},
            {"upsert": false});
          }

      ) ;

  1.2  查詢A表中字段sort 大於等於的數據ids , 根據ids 插入 B 表中

    db.getCollection('A').find({"score":{"$gte":500}}).forEach(function(item){
      db.getCollection('B').insert({ "score" : NumberInt(item.score),"id":item.id,"item_tags":"標簽1"});
    }) ;

 

2  mongoDB   MongoTemplate  批量

  2.1  批量insert
//BulkMode.UNORDERED:表示並行處理,遇到錯誤時能繼續執行不影響其他操作;
// BulkMode.ORDERED:表示順序執行,遇到錯誤時會停止所有執行
public Integer insertList(List<T> ts,Class<T> entityClass) throws MongoBulkWriteException { 

BulkWriteResult execute =
mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, entityClass).insert(ts).execute();
return execute.getInsertedCount();
}

 

  2.2  批量 update
public Long deleteItems(List<String> items) {
Query query = Query.query(Criteria.where("id").in(items));
Update update = Update.update("is_delete", 1);
BulkWriteResult execute =
mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, SourceMedia.class).updateMulti(query, update).execute();
return Long.valueOf(String.valueOf(execute.getModifiedCount()));
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM