前言

本文介绍了怎样通过javaAPI连接操作MongoDB数据库。

一、创建mongodb.properties

首先要创建一个maven或者springboot项目可以用来做简单的连接测试。
1.导入必要的jar包依赖

<dependencies>
        <!--单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--java操作mongodb的驱动依赖-->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.12.1</version>
        </dependency>
    </dependencies>

2.在resource文件夹下建立一个mongdb.propeties文件,并且写上数据库相关配置。
在这里插入图片描述
文件上写入如下内容,这里的dbname根据自己有的来写。

host = localhost
port = 27017
dbname = recommender

二、创建MongoUtils.java

在src\main\java下面创建一个com.itcast.mongodb的文件夹。当然这里想怎么命名随意。然后编写MongoUtils.java代码

package com.itcast.mongodb;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class MongoUtils {
    private static Properties properties;
    private static MongoDatabase mongoDatabase;
    private static String host;
    private static int port;
    private static InputStream stream = null ;
    private static String dbname;

    //创建一个静态代码块,用于初始化工具类中的静态变量,该静态代码块在类的加载过程中初始化阶段执行而且只执行一次
    static{
        if (properties == null){
            //判断properties对象是否为空,空则new一个出来
            properties = new Properties();
        }

        try {
            //创建字节流输入对象用来接受配置文件中的参数
            stream = MongoUtils.class.getClassLoader().getResourceAsStream("mongodb.properties");
            properties.load(stream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        host = properties.getProperty("host");
        port = Integer.parseInt(properties.getProperty("port"));
        dbname = properties.getProperty("dbname");
        System.out.println(dbname);
    }
    //定义一个getMongoClient方法,用来获取数据库连接对象
    public static com.mongodb.client.MongoClient getMongoClient(){
        String addr = "mongodb://"+host+":"+port;
        return MongoClients.create(addr);
    }

    //定义一个getMongoConn方法,用来实现连接指定的mongo数据库
    public static MongoDatabase getMongoConn(){
       MongoClient mongoClient = getMongoClient();
       mongoDatabase = mongoClient.getDatabase(dbname);
       return mongoDatabase;
    }

}

三、创建测试类testMongo.java

这里包含了java对mongo进行增删改查的操作。

import com.itcast.mongodb.MongoUtils;
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.junit.Test;
import org.omg.CORBA.PUBLIC_MEMBER;

public class TestMongo {

    private static MongoDatabase mongoDatabase;

    public static void main(String[] args) {
        mongoDatabase = MongoUtils.getMongoConn();

    }
    @Test
    public void getDBS(){                 //查看数据库
        MongoClient mongoClient = MongoUtils.getMongoClient();
        MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
        for (String databaseName : databaseNames){
            System.out.println(databaseName);
        }
    }
    @Test
    public void getCollections(){          //查看集合
        mongoDatabase = MongoUtils.getMongoConn();
        MongoIterable<String> listCollectionNames = mongoDatabase.listCollectionNames();
        for (String listCollectionName:listCollectionNames){
            System.out.println(listCollectionName.toString());
        }
    }
    @Test
    public void createCollections(){       //创建集合
        mongoDatabase = MongoUtils.getMongoConn();
        mongoDatabase.createCollection("itcast");
    }
    @Test
    public void dropCollections(){ //删除集合
        mongoDatabase = MongoUtils.getMongoConn();
        MongoCollection<Document> itcast = mongoDatabase.getCollection("itcast");
        itcast.drop();
    }

    @Test
    public void findDocument(){            //查看文档
        mongoDatabase = MongoUtils.getMongoConn();
        MongoCollection<Document> document = mongoDatabase.getCollection("Movie");
        FindIterable<Document> documents = document.find();
        for (Document document1 : documents){
            System.out.println(document1);
        }
    }
    @Test
    public void insertDocument(){           //插入文档
        mongoDatabase = MongoUtils.getMongoConn();
        MongoCollection<Document> itcast = mongoDatabase.getCollection("itcast");
        Document document = new Document("_id", "7").append("articledid", "1000007").append("content", "吃饭前好好洗手").
                append("userid", "01").append("phone", "133336997320");
        itcast.insertOne(document);

    }
    @Test
    public void updateDocument(){        //更新文档
        mongoDatabase = MongoUtils.getMongoConn();
        MongoCollection<Document> itcast = mongoDatabase.getCollection("itcast");
        Document document = new Document("content", "这是一封信");  //需要更新的内容
        itcast.updateOne(Filters.eq("content","这是一封充满感谢的信"),new Document("$set",document));//筛选出content为这是一封充满感谢的信的内容进行替换更新
    }

    public void deleteDocument(){   //删除文档
        mongoDatabase = MongoUtils.getMongoConn();
        MongoCollection<Document> itcast = mongoDatabase.getCollection("itcast");
        itcast.deleteOne(Filters.eq("_id","7"));
    }

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐