Spring mongoTemplate的批量更新操作,取自Stack Overflow

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()加到集合中。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值