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'];

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

      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()));
}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄