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>>);
WriteModel对象可以用new InsertOneModel(documentObject);来创建,然后list.add()加到集合中。