三、Mongodb Java中的使用
添加maven依赖
<!--mongodb 驱动-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.4</version>
</dependency>
<!--mongodb Java 驱动-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.6.4</version>
</dependency>
<!--单元测试支持-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
连接方式
/**
* 无权限的连接方式
*/
@Test
public void noAuthConnection(){
try{
//通过连接认证获取MongoDB连接
MongoClient client = new MongoClient("127.0.0.1", 27017);
// 连接到数据库: 如果指定的数据库不存在,mongo会自动创建数据库
MongoDatabase database = client.getDatabase("DEMO");
System.out.println("Mongodb connection successful...");
//创建一个集合(可以理解为创建一张表)
database.createCollection("user");
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 权限认证的方式
*/
@Test
public void authConnection(){
try{
// 连接到 mongodb 服务
ServerAddress addr = new ServerAddress("127.0.0.1", 27017);
// 设置权限认证:三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("demo", "DEMO", "demo123456".toCharArray());
//mongo的参数设置, 如最大连接、超时时间等
MongoClientOptions options = MongoClientOptions.builder().build();
//通过连接认证获取MongoDB连接
MongoClient client = new MongoClient(addr, credential, options);
// 连接到数据库: 如果指定的数据库不存在,mongo会自动创建数据库
MongoDatabase database = client.getDatabase("DEMO");
System.out.println("Mongodb connection successful...");
//创建一个集合(可以理解为创建一张表)
database.createCollection("user");
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 权限认证的方式2
*/
@Test
public void authConnectionByUri(){
try{
MongoClientURI uri = new MongoClientURI("mongodb://demo:demo123456@127.0.0.1:27017/DEMO");
//通过连接认证获取MongoDB连接
MongoClient client = new MongoClient(uri);
// 连接到数据库: 如果指定的数据库不存在,mongo会自动创建数据库
MongoDatabase database = client.getDatabase("DEMO");
System.out.println("Mongodb connection successful...");
//创建一个集合
database.createCollection("add_table");
}catch (Exception e){
e.printStackTrace();
}
}
举几个个栗子
先封装一个简单的连接工具类
public class MongoDBJDBC {
private MongoClient client;
private MongoDatabase database;
public MongoClient getClient(){
return this.client;
}
public MongoDatabase getDatabase(){
return this.database;
}
public MongoDBJDBC(){
try{
// 连接到 mongodb 服务
ServerAddress addr = new ServerAddress("127.0.0.1", 27017);
// 设置权限认证:三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("demo", "DEMO", "demo123456".toCharArray());
//mongo的参数设置, 如最大连接、超时时间等
MongoClientOptions options = MongoClientOptions.builder().build();
//通过连接认证获取MongoDB连接
client = new MongoClient(addr, credential, options);
// 连接到数据库: 如果指定的数据库不存在,mongo会自动创建数据库
database = client.getDatabase("DEMO");
System.out.println("Mongodb connection successful...");
}catch (Exception e){
throw new RuntimeException(e);
}
}
}
添加、获取 集合
@Test
public void addAndGetTable(){
MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
MongoDatabase database = mongoDBJDBC.getDatabase();
//添加集合
database.createCollection("add_table");
System.out.println("add table successful");
//获取集合
MongoCollection<Document> collection = database.getCollection("add_table");
System.out.println("get table successful");
}
添加文档
@Test
public void insertData(){
MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
MongoDatabase database = mongoDBJDBC.getDatabase();
//获取集合
MongoCollection<Document> collection = database.getCollection("user");
System.out.println("get table successful"); //创建文档
Document document = new Document()
.append("name", "张三")
.append("age", 23)
.append("sex", "男")
.append("description", "this is a bad boy!"); //插入到数据库
collection.insertOne(document);//插入单条数据 List<Document> list = new ArrayList<>();
Document document1 = new Document()
.append("name", "李四")
.append("age", 6)
.append("sex", "男")
.append("description", "this is a good boy!");
Document document2 = new Document()
.append("name", "赵八")
.append("age", 15)
.append("sex", "男")
.append("description", "this is a bad boy!");
list.add(document1);
list.add(document2);
collection.insertMany(list);//插入多条条数据
}
检索所有文档
@Test
public void findAllDoc(){
MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
MongoDatabase database = mongoDBJDBC.getDatabase(); //获取集合
MongoCollection<Document> collection = database.getCollection("user");
System.out.println("get table successful"); //执行查询
FindIterable<Document> findIterable = collection.find();
for (Document aFindIterable : findIterable) {
System.out.println(aFindIterable.toString());
}
}
更新文档
@Test
public void updateDoc(){
MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
MongoDatabase database = mongoDBJDBC.getDatabase();
//获取集合
MongoCollection<Document> collection = database.getCollection("user");
System.out.println("get table successful");
//更新文档 将文档中name= 赵八 的文档修改为description= this is a good boy!
collection.updateMany(Filters.eq("name", "赵八"), new Document("$set",new Document("description","this is a good boy!")));
}
删除文档
@Test
public void delDoc(){
MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
MongoDatabase database = mongoDBJDBC.getDatabase();
//获取集合
MongoCollection<Document> collection = database.getCollection("user");
System.out.println("get table successful");
//执行删除
collection.deleteMany(Filters.eq("name", "赵八"));
}
三、Mongodb Java中的使用的更多相关文章
- Redis入门教程(三)— Java中操作Redis
在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- Java学习之路(三):Java中的数组
数组的概述和定义的格式 数组的作用: 用来存储同种数据类型的多个值 数组的基本概念: 数组是存储同一种数据类型多个元素的集合.就相当于一个容器. 注意:数组既可以存储基本数据类型,也可以存储引用数据类 ...
- 正则表达式(三)——Java中的相关函数
1.前言 之前在学习Python时,我已经说过正则表达式的相关语法,这里不再赘述了,有需要可以参考: 2020.10.7 正则表达式(一) - ShineLe - 博客园 现在开始学习Java中的正则 ...
- Date, TimeZone, MongoDB, java中date的时区问题
打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Googl ...
- 类与接口(三)java中的接口与嵌套接口
一.接口 1. 接口简介 接口: 是java的一种抽象类型,是抽象方法的集合.接口比抽象类更加抽象的抽象类型. 接口语法: [修饰符] [abstract] interface 接口名 [extend ...
- 三、java中的流程控制
流程控制:1.分类:顺序结构.选择结构.循环结构.2.顺序结构:依次执行.3.选择结构:if.if...else.if...else if...else:三目运算符(表达式?为true的执行语句:为f ...
- Java中的方法应用
一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...
- JAVA中分为基本数据类型及引用数据类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...
随机推荐
- Javascript小白经典题型(一)
1. 输出是什么? function sayHi() { console.log(name) console.log(age) var name = 'Lydia' let age = 21 } sa ...
- 快速开发一个npm包(轮子)
动机 很多人都想写一个自己的轮子,可是开始动手的时候你总会遇到以下问题 一个基本的 js 库应该如何编写 基本的前端项目都要哪些文件 又要怎么打包发布到 npm 上 你的 es6 语法如何才能让别人识 ...
- TensorFlow——Graph的基本操作
1.创建图 在tensorflow中,一个程序默认是建立一个图的,除了系统自动建立图以外,我们还可以手动建立图,并做一些其他的操作. 下面我们使用tf.Graph函数建立图,使用tf.get_defa ...
- STM321的SPI驱动遇到的一个坑!!
最近在做项目要用到FATFS文件驱动和SD卡驱动,SD卡驱动我用的是SPI的通信方式,在挂载文件系统是总是挂在失败了,花了一天时间反复检查,才发现SPI在接收时候卡死: 为了寻找问题的原因,整个人都快 ...
- bzoj1597: [Usaco2008 Mar]土地购买 dp斜率优化
东风吹战鼓擂第一题土地购买送温暖 ★★★ 输入文件:acquire.in 输出文件:acquire.out 简单对比时间限制:1 s 内存限制:128 MB 农夫John准备扩大他的农 ...
- 倍增笔记ST表
https://noip-1253948194.cos.ap-beijing.myqcloud.com/%E5%80%8D%E5%A2%9E-ST%E7%AE%97%E6%B3%95.mp4 1123 ...
- 权限认证基础:区分Authentication,Authorization以及Cookie、Session、Token
1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个绝大多数人都会混淆的问题.首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我 ...
- dp-完全背包
( 推荐 : http://blog.csdn.net/insistgogo/article/details/11081025 ) 问题描述 : 已知一个容量为 V 的背包 和 N 件物品 , 第 ...
- EasyExcel 自定义单元格式的问题。
最近在做一个关于性能测试管理系统,一个新的需求,需要导出测试报告,直接使用了ali的封装的EasyExcel,但是在复杂头与一些样式,就缺少了自定义的灵活性,在官方demo中没有找到很好的解决方法. ...
- LeetCode 第15题-三数之和
1. 题目 2.题目分析与思路 3.思路 1. 题目 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且 ...