小强哥博客

小强哥,小强哥博客,技术大咖

Spring mongoTemplate的批量更新操作

1、使用spring mongoTemplate模板进行批量操作

首先要进行mongodb批量更新必须使用spring-data-mongodb jar包 1.9.0.RELEASE以上版本 同时如果用到spring boot框架必须把spring-boot-starter-parent版本弄到1.5.0.RELEASE以上版本 同事自己导入mongo-java-driver、mongodb-driver-core,尽量使用新版本,老版本会缺少必要的

//这里的BulkMode.UNORDERED是个枚举,,,collectionName是mongo的集合名
BulkOperations ops = template.bulkOps(BulkMode.UNORDERED,  “collectionName”);
for (;;) {

//update我还没有研究这就不讲了,嘿嘿
Update update = new Update();
...
ops.updateOne(query(where("id").is(user.getId())), update);


//我用的insert方法
//注意此处的obj必须是一个DBObject,可以是json对象也可以的bson对象,entity没有试过
ops.insert(Object obj);
}
//循环插完以后批量执行提交一下ok!
ops.execute();

2、使用mongoClient进行批量操作

两种方法创建mongoClient对象,一种通过MongoCredential信任证书类去连接mongo,还有一个直接用ip地址,然后获取database对象进行操作。

MongoDBPool(){
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址  
//ServerAddress()两个参数分别为 服务器地址 和 端口  
ServerAddress serverAddress = new ServerAddress("localhost",27017);  
List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
addrs.add(serverAddress);  

//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
MongoCredential credential = MongoCredential.createScramSha1Credential("username"
        , "runoob", "password".toCharArray());  
List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
credentials.add(credential);  

//通过连接认证获取MongoDB连接  
//MongoClient mongoClient = new MongoClient(addrs,credentials); 
MongoClient mongoClient = new MongoClient("172.18.30.1",8287);  

//连接到数据库  
MongoDatabase mongob = mongoClient.getDatabase("ptdata"); 
logger.info("Connect to database successfully"); 
}

然后获取collection,调用bulkWrite方法,参数是一个docment对象的集合,json对象可以通过Document.parse(jsonObject);转换成bson对象,也就是docment。

MongoCollection collection = mongob.getCollection("tableName");
    collection.bulkWrite(List<WriteModel<Document>>);


阅读原文