使用Java API 操作MongoDB

除了通过启动 mongo 进程进入Shell 环境访问数据库外,MongoDB 还提供了其他基于编程语言的数据库访问方法。MongoDB 官方提供了 编程语言的驱动包,利用这些驱动包可以使用编程方法连接并操作 MongoDB 数据库。想要使用 Java 程序操作 MongoDB,需要确保您的电脑上已经安装了 MongoDB,并搭建好了 Java 的环境。
————————————————
原文链接:https://blog.csdn.net/weixin_45187434/article/details/128553717

本文在IntelliJ IDEA Community Edition 2023.2.2 版本上复现了上述链接的Java代码,并补充了部分内容。

目录

一、准备工作

1、下载安装MongoDB及Compass

2、下载安装Java集成开发环境IDEA

3、Java pom.xml文件添加依赖

二、Java 操作 MongoDB 数据库(简易版)

1、启动MongoDB

2、连接数据库

3、创建集合

4、列出所有集合

5、获取/选择集合

6、插入文档

7、查询文档

8、更新文档

9、删除文档

10、删除集合

三、总结


一、准备工作

1、下载安装MongoDB及Compass

链接:https://pan.baidu.com/s/106k4FZA2V4gX6EWflvekiw?pwd=9v1w 
提取码:9v1w

2、下载安装Java集成开发环境IDEA

 下载链接:https://pan.baidu.com/s/1CAZ72pVu4Nqe1exrdsahtA?pwd=do83 
提取码:do83

3、Java pom.xml文件添加依赖

创建Maven环境,在project 中找到pom.xml文件,打开并添加以下依赖来操作 MongoDB 数据库:

二、Java 操作 MongoDB 数据库(简易版)

本次仅实现了Java与MongoDB的命令通信功能,可以在此基础上进行各种Java程序功能开发,不具有商品级别的Java应用软件的特点。在实际开发正式项目时,几乎不会采用本连接方法,生产级Java连接MongoDB公共架构,需要考虑可移植性与可靠性。

1、启动MongoDB
2、连接数据库
package org.example;

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

public class ConnectToMongodb {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());
    }
}

 运行后,IDEA输出结果部分截图:

3、创建集合
package org.example;

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

public class CreatingCollection {
    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 创建集合
        database.createCollection("Javatest");
        System.out.println("create collection successfully!");
    }
}

运行后,MongoDB可视化工具Compass显示结果:

 运行后,IDEA输出结果部分截图:

4、列出所有集合
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class ListOfCollection {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合列表
        for (String name : database.listCollectionNames()) {
            System.out.println(name);
        }
    }
}

运行后,IDEA输出结果部分截图:

5、获取/选择集合
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;


public class SelectingCollection {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 创建集合
        MongoCollection<Document> collection = database.getCollection("orders");
        System.out.println("chose collection : " + collection.getNamespace());
    }
}

运行后,IDEA输出结果部分截图:

6、插入文档
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class InsertingDocument {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合
        MongoCollection<Document> collection = database.getCollection("Javatest");
        System.out.println("chose collection : " + collection.getNamespace());

        Document document = new Document("title", "使用Java操作MongoDB")
                .append("description", "database")
                .append("time", 2024-05-30)
                .append("address", "xinjiang")
                .append("name", "NoSQL数据库");

        // 将文档插入到集合中
        collection.insertOne(document);
        System.out.println("Document insert successfully!");
    }
}

运行后,IDEA输出结果部分截图:

运行后,MongoDB可视化工具Compass显示结果:

7、查询文档
package org.example;

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;

public class RetrievingAllDocuments {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合
        MongoCollection<Document> collection = database.getCollection("Javatest");
        System.out.println("chose collection : " + collection.getNamespace());

        // 获取 iterable 对象
        FindIterable<Document> iterDoc = collection.find();
        int i = 1;
        // 获取迭代器
        for (Document document : iterDoc) {
            System.out.println(document);
            i++;
        }
    }
}

运行后,IDEA输出结果部分截图:

8、更新文档
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import org.bson.Document;

public class UpdatingDocuments {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合
        MongoCollection<Document> collection = database.getCollection("Javatest");
        System.out.println("chose collection : " + collection.getNamespace());

        // 更新单个可用 updateOne
        collection.updateMany(Filters.eq("title", "使用Java操作MongoDB"), Updates.set("major","大数据技术应用"));
        System.out.println("Document update successfully...");
        // 更新后检索文档
        // 获取 iterable 对象
        FindIterable<Document> iterDoc = collection.find();
        int i = 1;
        // 获取迭代器
        for (Document document : iterDoc) {
            System.out.println(document);
            i++;
        }
    }
}

运行后,IDEA输出结果部分截图:

运行后,MongoDB可视化工具Compass显示结果:

9、删除文档
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;

public class DeletingDocuments {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合
        MongoCollection<Document> collection = database.getCollection("Javatest");
        System.out.println("chose collection : " + collection.getNamespace());

        // 删除文档 删除多个可用 deleteMany
        collection.deleteOne(Filters.eq("title", "使用Java操作MongoDB"));
        System.out.println("Document delete successfully...");
        // 删除后检索文档
        // 获取 iterable 对象
        FindIterable<Document> iterDoc = collection.find();
        int i = 1;
        // 获取迭代器
        for (Document document : iterDoc) {
            System.out.println(document);
            i++;
        }
    }
}

运行后,IDEA输出结果部分截图:

运行后,MongoDB可视化工具Compass显示结果:

10、删除集合
package org.example;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class DropingCollection {

    public static void main(String[] args) {
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("sxh");
        System.out.println("Connect to database successfully!");
        System.out.println("MongoDatabase info is : " + database.getName());

        // 检索集合
        MongoCollection<Document> collection = database.getCollection("javatest");
        System.out.println("chose collection : " + collection.getNamespace());
        // 删除集合
        collection.drop();
        System.out.println("drop collection : " + collection.getNamespace());

        // 检索集合列表
        for (String name : database.listCollectionNames()) {
            System.out.println(name);
        }
    }
}

运行后,IDEA输出结果部分截图:

运行后,MongoDB可视化工具Compass显示结果:

三、总结

本次每个操作都创建了一个.java文件,如下所示(不包含Java_mongodb.java和Main.java):

遇到的问题:IDEA输出结果乱码!

解决的办法:idea乱码解决方式大汇总_idea 乱码-CSDN博客,试了多种方法,最后做了以下设置才成功:

  • 12
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值