mongodb 批量添加、修改和删除
1.使用MongoTemplate
a.批量插入
Insert a Collection of objects into a collection in a single batch write to the database.
<T> Collection<T> insert(Collection<? extends T> batchToSave, Class<?> entityClass);
或Insert a batch of objects into the specified collection in a single batch write to the database.
<T> Collection<T> insert(Collection<? extends T> batchToSave, String collectionName);
或 Insert a mixed Collection of objects into a database collection determining the collection name to use based on the
class.(将混合的对象集合插入数据库集合中,根据类确定要使用的集合名称。)
<T> Collection<T> insertAll(Collection<? extends T> objectsToSave);
b.批量更新
Updates all objects that are found in the collection for the entity class that matches the query document criteria
with the provided updated document.
UpdateResult updateMulti(Query query, Update update, Class<?> entityClass);
或
Updates all objects that are found in the specified collection that matches the query document criteria with the
provided updated document.
UpdateResult updateMulti(Query query, Update update, String collectionName);
或
Updates all objects that are found in the collection for the entity class that matches the query document criteria
with the provided updated document.
UpdateResult updateMulti(Query query, Update update, Class<?> entityClass, String collectionName);
c.批量删除
Remove all documents that match the provided query document criteria from the the collection used to store the
entityClass. The Class parameter is also used to help convert the Id of the object if it is present in the query.
DeleteResult remove(Query query, Class<?> entityClass);
DeleteResult remove(Query query, Class<?> entityClass, String collectionName);
DeleteResult remove(Query query, String collectionName);
d.查找并删除
<T> List<T> findAllAndRemove(Query query, String collectionName);
<T> List<T> findAllAndRemove(Query query, Class<T> entityClass);
<T> List<T> findAllAndRemove(Query query, Class<T> entityClass, String collectionName);
2.还有其他批量操作的方式。例如基于BulkOperations的操作
使用形式:
例:BulkOperations bulkOp = this.template.bulkOps(BulkMode.UNORDERED, COLLECTION_NAME);
获取BulkOperations对象后,在进行批量操作,具体查看BulkOperations提供的方法。
最后,execute()执行。
public Integer batchInsertDetailCommonDailyMessages(List<DetailCommonDailyStatis> messages) {
if (CollectionUtils.isEmpty(messages)) {
return 0;
}
// 插入新数据
BulkOperations bulkOp = this.template.bulkOps(BulkMode.UNORDERED, COLLECTION_NAME); //BulkNode有两种形式
bulkOp.insert(messages);
BulkWriteResult result = bulkOp.execute();int insertCount = result.getInsertedCount();return insertCount;
}
3.基于MongoRepository
mongodb 批量添加、修改和删除的更多相关文章
- ASP.NET MVC用存储过程批量添加修改数据
用Entity Framework 进行数据库交互,在代码里直接用lamda表达式和linq对数据库操作,中间为程序员省去了数据库访问的代码时间,程序员直接可以专注业务逻辑层的编写.但是对于比较复杂的 ...
- EF 批量 添加 修改 删除
1批量添加 db.T_Investigator.AddRange(list) 2批量删除 db.T_Investigator.RemoveRange(list) 3批量修改 for 循 ...
- DNS添加/修改/查询/删除A记录
#查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...
- Zabbix 4.0 API 实践,主机/主机群组 批量添加模板和删除模板
场景 我们日常在管理Zabbix 的时候,经常会需要批量添加模板和批量删除模板,Zabbix页面是提供的批量链接的功能,但是它链接的也只是当前页的主机,我们想扩展这个功能,在链接的时候,可以批量链接整 ...
- 基于JQuery easyui,gson的批量新增/修改和删除-servlet版
最近项目需要用到在页面进行批量操作,做了一些这方面的学习,参照网上的资料写了个小例子,记录一下: 准备 引入gson-2.6.2.jar,这里使用gson而不使用json-lib,原因是json-li ...
- Entity Framework Code First添加修改及删除单独实体
对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...
- Entity Framework Code First添加修改及删除外键关联实体
1.添加外键关联实体 1>.添加新的Province及City实体 using (var ctx = new PortalContext()) { var city1 = new City { ...
- SqlSugar批量添加修改问题
直接InsertRange空集合会报错,如果我们是同时执行多个添加或修改,不要共用一个上下文,最好是在方法里面声明上下文进行区分,不然容易报错 //如果同时执行多个添加,更新 操作不要共用一个上下文, ...
- react.js 之 批量添加与删除功能
最近做的CMS需要用到批量添加图片的功能:在添加文件的容器盒子内,有两个内容,分别是:添加按钮与被添加的选择文件组件. 结构分析: 被添加的组件,我们称为:UploadQiNiuFiles(七牛文件上 ...
随机推荐
- MYsql 客户端下载地址
workbench: https://www.mysql.com/cn/products/workbench/
- linux下selenium+phantomjs环境
# 安装依赖软件yum -y install wget fontconfig # 下载PhantomJSwget -P /tmp/ https://bitbucket.org/ariya/phanto ...
- Codeforces 1239C. Queue in the Train
传送门 事实上就是模拟 搞一个优先队列维护一下事件结构体:时间,人的编号,入队还是出队 再维护两个 $set$ ,队列内的人 $inQueue$ ,想要进入队列内的人 $want$ 然后模拟模拟模拟! ...
- Make It One CodeForces - 1043F (数论,最短路,好题)
大意: 给定序列$a$, 求最小子集, 使得gcd为1. 对于数$x$, 素因子多少次幂是无关紧要的, 这样就可以用一个二进制数来表示. $x$取$gcd$后的二进制状态最多$2^7$, 可以暴力枚举 ...
- 使用python操作kafka
使用python操作kafka目前比较常用的库是kafka-python库 安装kafka-python pip3 install kafka-python 生产者 producer_test.py ...
- ETL测试或数据仓库测试入门
概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库. 什么是BI? BI(Business Intelligence)即商务智能,它是一套完整的解决 ...
- RAII惯用法:C++资源管理的利器(转)
RAII惯用法:C++资源管理的利器 RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写.中文可将其翻 ...
- vue项目默认IE以最高级别打开
只需要在index.html加入 <meta http-equiv="X-UA-Compatible" content="IE=Edge">
- 配置Notepad++万能调试
需求: 正常情况下 使用notepad++编辑修改一些网页或脚本文件,修改之后想要查看效果需要Ctrl+S保存,然后从文件目录中打开查看. 现在我想做的就是简化查看效果的流程,让notepad++实现 ...
- web项目部署在centos 7验证码显示不出来解决方案
今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...