MongoDB Java Driver 3.4操作
导入jar包
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency>
连接MongoDB
实例化一个没有任何连接参数的MongoClient对象,可以连接到运行在本地主机的27017端口
MongoClient mongoClient = new MongoClient();
我们也可以连接到指定主机的27017端口
MongoClient mongoClient = new MongoClient("localhost");
指定主机和端口
MongoClient mongoClient = new MongoClient("localhost", 27017);
指定MongoClientURI
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
获得数据库和集合
连接到test库
MongoDatabase database = mongoClient.getDatabase("test");
获得users集合
MongoCollection<Document> collection = database.getCollection("users");
查询文档
用来打印查询结果
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(Document document) {
System.out.println(document.toJson());
}
};
查询所有文档
collection.find().forEach(printBlock); collection.find(new Document()).forEach(printBlock);
复合查询
collection.find(eq("name", "sue")).forEach(printBlock); // 通过过滤器查询 collection.find(and(gte("age", 20), lt("age", 30), eq("type", 2))).forEach(printBlock); // 通过Filters 过滤 collection.find(new Document("age", new Document("$gte", 20).append("$lt", 30)).append("type", 2)).forEach(printBlock); // 通过 filter document 过滤
返回指定的查询字段
collection.find().projection(new Document("name", 1).append("age", 1).append("type", 1).append("_id", 0)).forEach(printBlock); // 通过.projection()指定返回的字段 collection.find().projection(fields(include("name", "age", "type"), excludeId())).forEach(printBlock); // 通过Projections类过滤
排序
collection.find().sort(Sorts.ascending("name")).forEach(printBlock); // 通过.sort() Sorts类排序
增加文档
插入一条数据
Document document = new Document("name", "webb")
.append("age", 24)
.append("type", 1)
.append("status", "A")
.append("favorites", new Document("sports", "run").append("food", "photo")); collection.insertOne(document); // 插入一条数据插入多条数据
Document document2 = new Document("name", "lebo")
.append("age", 24)
.append("type", 1)
.append("status", "A")
.append("favorites", new Document("sports", "run").append("food", "photo")); List<Document> documents = new ArrayList<>();
documents.add(document);
documents.add(document2);
collection.insertMany(documents); // 插入多条数据更新文档
修改单个文档
collection.updateOne(eq("name", "abc"), combine(set("age", 24), set("status", "B")));
修改多个文档
collection.updateMany(eq("name", "webb"), combine(set("age", 23), set("type", 2)));
如果upsert为true的话,没有匹配到查询条件,就会插入一条。
collection.updateOne(eq("name", "wenboxu"), combine(set("age", 24)), new UpdateOptions().upsert(true));
替换一条记录
collection.replaceOne(eq("name", "wenboxu"), new Document("age", "22").append("name", "wenboxu"));
删除文档
删除单个文档
collection.deleteOne(eq("name", "webb"));
删除多个文档
collection.deleteMany(eq("age", 22));
删除所有文档
collection.deleteMany(new Document());
MongoDB Java Driver 3.4操作的更多相关文章
- MongoDB Java Driver操作指南
MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...
- Mongodb Java Driver 参数配置解析
要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...
- 给java mongodb 官方driver 增加bean 操作
mongodb官方的java driver不支持直接插入java bean,只能使用DbObject的Key,Value形式进行insert,update,(c# mongodb官方driver类 ...
- MongoDB Java Driver
本文使用 Java 来描述对 Mongodb 的相关操作,数据库版本是 3.2.8,驱动版本为 3.2.2. 本文将讨论 如何连接MongoDB 文档的 CURD 操作 文档的上传和下载 1. 连接到 ...
- BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能
http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...
- 数据库.MongoDB.Java样例
1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...
- MongoDB Java API操作很全的整理
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...
- [译] MongoDB Java异步驱动快速指南
导读 mongodb-java-driver是mongodb的Java驱动项目. 本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
随机推荐
- Calender设置固定时间遇到的问题
在使用Calender获取实例,设置成UTC时区时,发现比我们常规的月份多了一个月: 示例代码如下: Calendar calendar = Calendar.getInstance(TimeZone ...
- 使用spring webflow,在前台页面中如何显示后端返回的错误信息
刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...
- web从入门开始(6)-----框架
普通框架 框架概念:就是将一个页面分割成小窗口,每个窗口都是一个网页 框架集和框架页 框架集:<frameset>:主要用来划分窗口的 框架页:<frame>:主要用来指定窗口 ...
- 关于统一资源标志符URL的理解
URL由三部分构成 A:B:C A:URL使用的领域 B:在此领域的类型名称 C:标识资源的具体位置 C可以是一个绝对路径,也可以是端口号加上资源名称,总之是可以唯一标示资源的标识 例: 在网址中 S ...
- 有个程序猿要去当CEO了:(二)扬帆起航
合同签好了. 从昨天下午三点半,一直修改到晚上七点半,才确定签下. 这过程中,有一点讨论得比较久: 就是甲方要不要也拿底薪. 甲方是这样说的:"总经理拿N仟元,董事长不要说比总经理高,但是也 ...
- 交叉编译Python-2.7.13到ARM(aarch32)—— 支持sqlite3
作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 环境 主机: ubuntu14.04 64bit 开发板: qemu + vexpress-a9 (参考: ...
- C++获取字符cin,getchar,get,getline的区别
原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5241544.html 1.cin>> 1)最常见的是获取输入的一个字符或数字,如 in ...
- oracle数据库如何打印九九乘法表
对于九九乘法表,相信对于懂IT的人并不陌生,但是外行可能会有很多的不懂,c语言也同样需要了解,它是学习的入门课程,oracle数据库书写九九乘法表有好几种方式,下面就有我为大家介绍,一起来看看吧. 九 ...
- Linux之sort命令
sort - sort lines of text files 提示:如果第一个字段都相同的话,就根据第二个字段进行排序 参数: -f 忽略大小写 -b 忽略最前面的空格部分 -M 以月份的名字 ...
- Office 365开发环境概览
本文于2017年3月26日首发于LinkedIn,原文链接请参考这里 本系列文章已经按照既定计划在每周更新,此前的几篇文章如下 Office 365 开发概览系列文章和教程 Office 365开发概 ...