添加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中的使用的更多相关文章

  1. Redis入门教程(三)— Java中操作Redis

    在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...

  2. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  3. Java学习之路(三):Java中的数组

    数组的概述和定义的格式 数组的作用: 用来存储同种数据类型的多个值 数组的基本概念: 数组是存储同一种数据类型多个元素的集合.就相当于一个容器. 注意:数组既可以存储基本数据类型,也可以存储引用数据类 ...

  4. 正则表达式(三)——Java中的相关函数

    1.前言 之前在学习Python时,我已经说过正则表达式的相关语法,这里不再赘述了,有需要可以参考: 2020.10.7 正则表达式(一) - ShineLe - 博客园 现在开始学习Java中的正则 ...

  5. Date, TimeZone, MongoDB, java中date的时区问题

    打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Googl ...

  6. 类与接口(三)java中的接口与嵌套接口

    一.接口 1. 接口简介 接口: 是java的一种抽象类型,是抽象方法的集合.接口比抽象类更加抽象的抽象类型. 接口语法: [修饰符] [abstract] interface 接口名 [extend ...

  7. 三、java中的流程控制

    流程控制:1.分类:顺序结构.选择结构.循环结构.2.顺序结构:依次执行.3.选择结构:if.if...else.if...else if...else:三目运算符(表达式?为true的执行语句:为f ...

  8. Java中的方法应用

    一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...

  9. JAVA中分为基本数据类型及引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

随机推荐

  1. .gitignore 文件配置

    git 使用过程中,有许多文件或者文件夹是不希望更新到远程仓库了,因为他们比较占地方,这个时候我们可以利用 .gitignore 文件忽略文件. 按项目进行忽略 .gitignore 文件用于忽略文件 ...

  2. 剑指Offer-60~68题

    60. \(n\) 个骰子的点数 题目描述: 扔 \(n\) 个骰子,向上面的数字之和为 \(S\).给定 \(n\),请列出所有可能的 \(S\) 值及其相应的概率. 示例: 输入:n = 1 输出 ...

  3. java架构之路(多线程)大厂方式手写单例模式

    上期回顾: 上次博客我们说了我们的volatile关键字,我们知道volatile可以保证我们变量被修改马上刷回主存,并且可以有效的防止指令重排序,思想就是加了我们的内存屏障,再后面的多线程博客里还有 ...

  4. Animator的小记

    前阵子在做动画相关的内容,整理一下Animator. 1.动画切换 1.1状态之间的切换,在状态间连线(Make Transition),并且设置触发条件,代码里调用SetTrigger.SetBoo ...

  5. kuangbin专题 专题九 连通图 Strongly connected HDU - 4635

    题目链接:https://vjudge.net/problem/HDU-4635 题目:有向图,给定若干个连通图,求最多还能添加几条边,添完边后,图仍然要满足 (1)是简单图,即没有重边或者自环 (2 ...

  6. cogs 293. [NOI 2000] 单词查找树 Trie树字典树

    293. [NOI 2000] 单词查找树 ★★☆   输入文件:trie.in   输出文件:trie.out   简单对比时间限制:1 s   内存限制:128 MB 在进行文法分析的时候,通常需 ...

  7. 原生JS在网页上复制的所有文字后面自动加上一段版权声明

    不少技术博客有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢? 其实实现的方式很简单,可以在我的网站页面上绑定一个copy事件,当你复制文章内容的时候,自动在剪 ...

  8. php获取本年、本月、本周时间戳和日期格式

    时间戳格式: //获取今日开始时间戳和结束时间戳 $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')); $endToday=mktime(0 ...

  9. Python中的open()方法总结

    总结Python中的open()方法 message= {'企业即时通信': 'aaa', '企业名称': 'bbb'} with open("..\\r.txt", " ...

  10. numpy初识 old

    一.创建ndarrary 1.使用np.arrary()创建 1).一维数组 import numpy as np np.array([1, 2, 3, 4]) 2).二维数组 np.array([[ ...