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权威指南》的部分内容。
Java MongoDB插入的更多相关文章
- mongoDB 插入数据 用java实现
import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; impor ...
- 9.java 操作mongodb插入、读取、修改以及删除基础
1 package mongodb; import java.net.UnknownHostException; import java.util.ArrayList; import java.uti ...
- Java mongodb api疑问之MongoCollection与DBCollection
在学习Java mongodb api时发现,可以调用不同的java mongodb api来连接数据库并进行相关操作. 方式一: 该方式使用mongoClient.getDB("xxx&q ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- Java 批量插入数据(Oracle)
//批量添加20000条数据用时8秒. try { String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...
- Mongodb插入记录
Mongodb下文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 MongoDB ...
- Data Base MongoDB 插入时间不正确的问题
关于mongodb插入时间不正确的问题 mongodb插入时间: 把本地时间转换为utc时间: 也就是比本地时间少8个小时: 读取的时候又会转换本地时间: 所有一般不需处理:
- Java + MongoDB Hello World Example--转载
原文地址:http://www.mkyong.com/mongodb/java-mongodb-hello-world-example/ A simple Java + MongoDB hello w ...
- c# MongoDB插入和批量插入,插入原理
在开发之前,选择MongoDb驱动是件很重要的事情.如果选择不好,在后期的开发的是件很费力的事情,因为我就遇到这样的问题.MongoDb驱动有几种比较流行驱动,官方驱动和samus是两种使用比较多的. ...
随机推荐
- Spring第九弹—使用CGLIIB实现AOP功能与AOP概念解释
JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理,原理之前我已经讲过.JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口.如果想代理没 ...
- UVA+POJ中大数实现的题目,持续更新(JAVA实现)
UVA10494:If We Were a Child Again 大数除法加取余 import java.util.Arrays; import java.util.Scanner; import ...
- MapReduce Unit Test
以前用java写MR程序总不习惯写单元测试,就是查错也只是在小规模数据上跑一下程序.昨天工作时,遇到一个bug,查了好久也查出来.估计是业务逻辑上的错误.后来没办法,只好写了个单元测试,一步步跟踪,瞬 ...
- Python(异常处理)
一 错误和异常 程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) 什么是异常 异常就是程序运行时发 ...
- display、box-sizing,position有哪些值?
display有哪些值? none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline- ...
- 负载均衡技术在CDN中发挥着重要作用
转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...
- 20145302张薇《Java程序设计》实验四报告
20145325张薇 实验四:Andoid开发基础 实验内容 使用 Android Studio 设计"Hello" 设计过程 首先创建项目 选择.xml中的`Design 选中W ...
- Kali视频学习1-5
Kali视频学习1-5 安装 安装Kali虚拟机 设置网络更新,使用了163的源 deb http://mirrors.163.com/debian wheezy main non-free cont ...
- C++利用系统时间产生的随机数
本文由青松原创并依GPL-V2及其后续版本发放,转载请注明出处且应包含本行声明. C++中常用rand()函数生成随机数,但严格意义上来讲生成的只是伪随机数(pseudo-random integra ...
- 快用Visual Studio(三)- 代码重构
什么是代码重构 编写代码 | 找到代码 | 修改代码 关于重构的工具 Bracket Matching Selection Cursors Intelligence Parameter hints E ...