三、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:[email protected]: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", "赵八"));
      }           

原文地址:https://www.cnblogs.com/vchar/p/12243723.html

时间: 2024-08-01 21:33:45

三、Mongodb Java中的使用的相关文章

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

三、JAVA中的IO流,输出流

JAVA中java.io.*;提供数据的流式输入与输出的相关类,IO流是对于输入与输出的抽象,JAVA把这些不同来源和目标的数据都统一抽象为数据流.将输入与输出的数据统一为流的好处是程序不必关心要读取得是文件,还是网络中的数据,而是统一当作IO流来处理. IO流又分为字符流与字节流,主要区别 字节流 按字节处理(一次处理一个字节) 使用类OutputStream 字符流 按字符处理(一次处理一个字符即两个字节) 使用类Writer 其实字节流与字符流处理十分相似(即每次处理的单位不同),好多书上

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

数组的概述和定义的格式 数组的作用: 用来存储同种数据类型的多个值 数组的基本概念: 数组是存储同一种数据类型多个元素的集合.就相当于一个容器. 注意:数组既可以存储基本数据类型,也可以存储引用数据类型. 数组的定义格式: 数据类型[] 数组名 = new 数据类型[指定数组的长度] 数组的初始化 概念: 就是为数组开辟连续的内存空间,并且为每个数的元素赋值 如何初始化: 动态初始化:指定长度,有系统给出初始化值  int[] arr = new int[5] 静态初始化:给出初始化的值 格式:

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

打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Google CST结果出来是Central Standard Time. 表示North American Central Standard Time. 还以为jdk的date类有问题,debug date toString发现确实是将Asia/Shanghai的name 简写成CST. 接着google,

Java Socket应用(三)——java中URL的应用

转载请注明:http://blog.csdn.net/uniquewonderq 如何使用呢? package com.test; import java.net.MalformedURLException; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; public class test{ public static void main(String[] args) {

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

一.接口 1. 接口简介 接口: 是java的一种抽象类型,是抽象方法的集合.接口比抽象类更加抽象的抽象类型. 接口语法: [修饰符] [abstract] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; [public] [static] 方法{}://JDK1.8后 [public] [static] 类/接口: } 2. 接口成员的修饰符 接口中的所有成员的访问权限默

MongoDB在windows上安装以及java中的增删改查

1.windows下的安装创建 http://tech.it168.com/a2011/0603/1200/000001200064_2.shtml http://blog.csdn.net/xiaoxing598/article/details/54233044 2.Java操作mongodb http://www.cnblogs.com/zhwl/p/3491213.html http://blog.csdn.net/xiaoyw71/article/details/49633831 htt

Java基础(十五):Java 中的内部类

问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便 问:内部类有几种呢? 答:内部

HTTP协议报文、工作原理及Java中的HTTP通信技术详解

一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.                 它是一个应用层协议,承载于TCP之上.由请求和响应构成,是一个标准的客户端服务器模型            1.2.HTTP的发展历史: