你的位置:首页 > 数据库

[数据库]Java MongoDB插入


前言

        插入是向MongoDB中添加数据的基本方法。对目标集使用insert方法来插入一条文档。这个方法会给文档增加一个”_id”属性(如果原来没有的话),然后保存到数据库中。

 

1、连接数据库,拿到集合firstCollection

 

        MongoClient mClient = new MongoClient("10.211.55.8");

        DB db = mClient.getDB("test");

        DBCollection collection = db.getCollection("firstCollection");

2、插入一条文档

        内容:name:user28,age:30,sex:1

 

        Java方法内容:

        BasicDBObject obj = new BasicDBObject();

        obj.put("name", "user28");

        obj.put("age", 30);

        obj.put("sex", 1);

        collection.insert(obj);

        这样就成功插入了一条文档,插入后的内容如下所示:

        { "_id" : ObjectId("55bf285368084e1906793d7a"), "name" : "user28", "age" : 30, "sex" : 1 }

3、批量插入文档

        当需要插入多条文档的时候,循环进行单条插入当然是可以,但是效率不高,MongoDB提供了批量插入的方法

        内容1:name:user29,age:30,sex:1

        内容2:name:user30,age:30,sex:1

 

        Java方法内容:

        List<DBObject> objs = new ArrayList<DBObject>();

        objs.add(new BasicDBObject("name","user29").append("age", 30).append("sex", 1));

        objs.add(new BasicDBObject("name","user30").append("age", 30).append("sex", 1));

        collection.insert(objs);

 

        这样就批量进行了插入。批量插入通过一次请求将数据传递给数据库,然后由数据库进行插入,比循环单条插入节省了每次进行请求的资源。

4、利用update方法插入

        一般update用于更新文档,但是这个方法的upsert属性可以使得在没有查找到要更新的文档的时候插入一条新文档

 

        public WriteResult update(DBObject query,

                                                DBObject update,

                                                boolean upsert,

                                                boolean multi)

        参数介绍:

                query - the selection criteria for the update

                update - the modifications to apply

                upsert - when true, inserts a document if no document matches the update query criteria

                multi - when true, updates all documents in the collection that match the update query criteria, otherwise only updates one

        Java方法内容:

        collection.update(new BasicDBObject("name","user31"),

                new BasicDBObject("name","user31").append("sex", 1).append("age", 30)

                ,true,false);

5、通过save方法来插入

        MongoDB中save也有插入的功能,但是和insert相比有些区别

        1、save相当于根据不同条件去执行insert或者update功能(这个条件就是_id属性),而insert只有插入功能

        2、save只能单条记录,如果有数组,需要遍历进行处理,而insert可以直接处理数组,所以在处理批量插入的时候insert效率会高很多

 

        利用save方法插入文档,java方法内容:

        BasicDBObject obj = new BasicDBObject("name","user30").append("age", 30);

        collection.save(obj);

                

6、插入原理

        当执行出入的时候,使用的驱动程序会将数据转换成BSON 的形式,然后送入数据库。数据库解析BSON内容,检查是否存在_id属性,如果没有则给予生成一个。然后就原样的将数据存入数据库中。由于MongoDB在插入数据的时候不执行代码,所以在这部分就杜绝了注入式攻击的可能

 

7、总结

        插入文档有很多方式,但是在不同的条件下不同的方法有着不同的执行效率,所以需要根据实际的业务场景选择合适的方法

备注

        文中节选了《MongoDB权威指南》的部分内容。