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