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

点这里可以跳转到人工智能网站

发表评论