Mongodb Java中的使用

Posted 起岸星辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的使用的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects

Java:如何在正在保存的流上即时计算sha1摘要?

如何使用用户名和密码连接到Java中的MongoDB 3.2?

如何使用java将数据从片段传递到android中的另一个片段?

(转) Java中的负数及基本类型的转型详解

java中的mongoDB怎么分页,要代码,数据量较大