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