首页 > 数据库 >使用Java API 操作MongoDB

使用Java API 操作MongoDB

时间:2024-05-30 11:31:29浏览次数:32  
标签:Java database MongoDB System API mongodb println import com

除了通过启动 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());
    }
}

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

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显示结果:

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

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);
        }
    }
}

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

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());
    }
}

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

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!");
    }
}

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

运行后,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++;
        }
    }
}

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

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++;
        }
    }
}

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

运行后,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++;
        }
    }
}

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

运行后,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);
        }
    }
}

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

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

三、总结

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

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

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

标签:Java,database,MongoDB,System,API,mongodb,println,import,com
From: https://blog.csdn.net/xuhuishao/article/details/139307460

相关文章

  • 为何Java抽象类是代码架构的基石?
    效率工具推荐一个程序员的常用工具网站,效率加倍嘎嘎好用:程序员常用工具云服务器云服务器限时免费领:轻量服务器2核4G腾讯云:2核2G4M云服务器新老同享99元/年,续费同价阿里云:2核2G3M的ECS服务器只需99元/年,续费同价为何Java抽象类是代码架构的基石?Java抽象类是面向对象编......
  • Java毕业设计-基于springboot开发的旅游网站-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、用户信息管理2、旅游动态管理3、景点信息管理4、公告信息管理四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的旅游网站-......
  • Java开发工具|推荐收藏
    Java是一种广泛使用的编程语言,拥有多种开发工具,包括集成开发环境(IDE)和代码编辑器。以下是几种常见的Java开发工具以及它们的比较:Eclipse是一款流行的开源IDE,广泛用于Java开发。它具有强大的代码编辑、调试和性能分析功能,支持插件扩展,可以满足不同开发需求。Eclipse......
  • java泛型基础
    ​ 一、泛型介绍: JDK5除了推出foreach新循环,还推出了一个新特性:泛型泛型作用:在一个类或接口的声明处指定该类中某个属性的类型。或声明方法返回值的类型或方法参数的类型  泛型也称为参数化类型。它允许我们在一个类或接口的声明处指定该类中某个属性的类型或  ......
  • dubbo~javax.validation和jakarta.validation的介绍与排雷
    javax.validation和jakarta.validation都是用于Java中进行数据验证(validation)的相关API,它们提供了一套标准的验证框架,用于验证Java对象的属性是否符合指定的约束条件。这两个API的作用类似,只是在JavaEE平台的演进过程中发生了一些变化。javax.validation:javax.validation是最......
  • SadTalker API调用生成视频
    fromfastapiimportFastAPIimportuvicornimportnest_asynciofromfastapi.middleware.corsimportCORSMiddlewarefromdatetimeimportdatetimeapp=FastAPI()origins=["*"]app.add_middleware(CORSMiddleware,allow_origins=origins,allow_cr......
  • 给师妹写的《Java并发编程之线程池十八问》被表扬啦!
    写在开头  之前给一个大四正在找工作的学妹发了自己总结的关于Java并发中线程池的面试题集,总共18题,将之取名为《Java并发编程之线程池十八问》,今天聊天时受了学妹的夸赞,心里很开心,毕竟自己整理的东西对别人起到了一点帮助,记录一下!Java并发编程之线程池十八问  经过之前......
  • 深入理解Java的设计模式
    设计模式(DesignPatterns)是软件开发中的宝贵经验总结,提供了解决常见设计问题的模板和最佳实践。在Java开发中,设计模式尤为重要,因为它们能够提高代码的可维护性、可扩展性和可重用性。本篇博客将详细介绍几种常见的设计模式,帮助读者掌握如何在Java开发中应用这些模式。什么是设......
  • 深入探索Java HashMap底层源码:结构、原理与优化
    引言简述HashMap在Java集合框架中的地位及其应用场景。阐明学习HashMap底层原理的重要性,特别是在面试、性能调优和解决并发问题方面的价值。1.HashMap基础概念数据结构:介绍HashMap的核心——哈希表,包括数组加链表/红黑树的结构。线程安全性:强调HashMap是非线程安全的,以及在......
  • 递减 MongoDB 值,防止出现负数
    我正在使用MongoDB,我有一个文档,我想在其中递增一个计数字段。但是,我需要确保该计数不会低于零。例如,如果inc为-2,而当前计数为1,那么应用$inc将导致计数为-1,而这正是我希望避免的。以下是我当前使用的更新操作:db.collection.updateMany({'_id':{'$in':object_ids}},{......