• 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权威指南》的部分内容。

  • 相关阅读:
    计算机的时空观以及俩者间的相互转换
    发送一个记录数据包
    流的压缩与解压缩函数
    通过自定义消息调用主窗体的菜单项
    多标签窗体的释放一法
    记录数组存出到文件和从文件导入
    变体记录
    内存流的使用
    用流读写结构化文件
    下拉框、下拉控件之Select2
  • 原文地址:https://www.cnblogs.com/luoaz/p/4702076.html
Copyright © 2020-2023  润新知