当前位置: 首页 > news >正文

【MongoDB】三、使用Java连接MongoDB

【MongoDB】三、使用Java连接MongoDB

  • 实验目的
  • 实验内容
    • 练习
      • 1、开启Eclipse,创建Java Project项目,命名为Mongo1
      • 2、添加项目依赖的jar包
      • 3、创建类MongoDemo
      • 4、连接数据库
      • 5、查看集合
      • 6、创建集合
      • 7、删除集合
      • 8、查看文档
      • 9、插入文档
      • 10、更新文档
      • 11、删除文档
    • 测试
      • 新建集合course
      • 删除新建集合course
      • 在student集合中插入文档
      • 将_id为1014的学生成绩修改为80
      • 删除_id为1012的学生
  • 实验小结


实验目的

(1)了解使用Java操作MongoDB的流程;
(2)能够编写Java操作MongoDB的代码。


实验内容

练习

1、开启Eclipse,创建Java Project项目,命名为Mongo1

在这里插入图片描述


2、添加项目依赖的jar包

在这里插入图片描述


3、创建类MongoDemo

       在类的构造函数MongoDemo()中编写代码实现对MongoDB服务器的连接。

MongoClient connection =null;  //存储MongoDB数据库连接对象MongoDatabase db=null;   //存储连接的数据库对象public MongoDemo() {ServerAddress serverAddress = new ServerAddress("127.0.0.1", 27017);// 第一个"root" 为账号,第二个"admin"为创建账户时的数据库名称,第三个参数为密码MongoCredential mongoCredential = MongoCredential.createCredential("root", "admin", "123456".toCharArray());//MongoClientOptions 是连接的相关配置,类似数据库连接池的相关配置,使用默认即可connection = new MongoClient(serverAddress,mongoCredential, MongoClientOptions.builder().build());             }

4、连接数据库

       在类MongoDemo中定义DatabaseConn ()方法,用来连接指定的数据库。

public void DatabaseConn(String dbName) {db = connection.getDatabase(dbName);}
mongdemo.DatabaseConn("stu");

5、查看集合

       在类MongoDemo中定义getCollection ()方法,主要用于查看数据库中的集合。

public void getCollection() {MongoIterable<String> listCollectionNames = db.listCollectionNames();// 获取db数据库中的集合列表for (String collectionName : listCollectionNames) {System.out.println(collectionName.toString());}}

6、创建集合

       在类MongoDemo中定义createCollection ()方法,主要用于创建集合。

//创建集合public void createCollection(String collectionname){db.createCollection(collectionname);}

7、删除集合

       在类MongoDemo中定义dropCollection()方法,主要用于删除集合。

//删除集合public void dropCollection(String collectionname){MongoCollection<Document> collection = db.getCollection(collectionname);collection.drop();}

8、查看文档

       在类MongoDemo中定义findDocument ()方法,主要用于查看文档。

//查看文档public void findDocument(String collectionname){MongoCollection<Document> collection =db.getCollection(collectionname);FindIterable<Document> documents = collection.find();System.out.println("集合"+collectionname+"中的文档有:");for (Document document : documents) {System.out.println(document);}}

9、插入文档

       在类MongoDemo中定义insertOneDocument()方法,主要用于插入单个文档。

//插入文档public void insertOneDocument(String collectionname,Document document){MongoCollection<Document> collection = db.getCollection(collectionname);      collection.insertOne(document);}

10、更新文档

       在类MongoDemo中定义updateDocument ()方法,主要用于更新文档。

//更新文档public void updateDocument(String collectionname){MongoCollection<Document> collection =db.getCollection(collectionname);//修改的键以及修改的值Document document = new Document("score","80");//用作修改collection.updateOne(Filters.eq("_id","1014"),new Document("$set",document));}

11、删除文档

       在类MongoDemo中定义deleteDocument()方法,主要用于删除文档。

//删除文档public void deleteDocument(String collectionname){MongoCollection<Document> collection = db.getCollection(collectionname);collection.deleteOne(Filters.eq("_id","1012"));}

测试

       在类MongoDemo中定义主函数main(),主要对以上定义的功能函数进行测试。在主函数中连接数据库stu,在数据库stu中新建集合course,删除新建集合course,在student集合中插入文档{_id:“1016”,name:“唐开平”,sex:“女”,age:18,major:“软件技术”,credits:42,score:74},将_id为1014的学生成绩修改为80,删除_id为1012的学生。

新建集合course

mongdemo.createCollection("course");
mongdemo. getCollection();

删除新建集合course

mongdemo.dropCollection("course");
mongdemo.getCollection();

在student集合中插入文档

Document document = new Document("_id","1016").append("name", "唐开平").append("sex", "女").append("age","18").append("major", "软件技术").append("credits", "42").append("score", "74");
mongdemo.insertOneDocument("students",document);
mongdemo.findDocument("students");

将_id为1014的学生成绩修改为80

	//更新文档public void updateDocument(String collectionname){MongoCollection<Document> collection =db.getCollection(collectionname);//修改的键以及修改的值Document document = new Document("score","80");//用作修改collection.updateOne(Filters.eq("_id","1014"),new Document("$set",document));}
mongdemo.updateDocument("students");	
mongdemo.findDocument("students");

删除_id为1012的学生

//删除文档public void deleteDocument(String collectionname){MongoCollection<Document> collection = db.getCollection(collectionname);collection.deleteOne(Filters.eq("_id","1012"));}  mongdemo.deleteDocument("students");
mongdemo.findDocument("students");

实验小结

       通过本次实验,我掌握了通过使用Java连接MongoDB的具体流程以及使用Java对MongoDB数据库进行的增删改查等一系列操作。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项:
1、有疑问前,知识学习前,先用搜索。
2、熟读写基础知识,学得会不如学得牢。
3、选择交流平台,如QQ群,网站论坛等。
4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

相关文章:

【MongoDB】三、使用Java连接MongoDB

【MongoDB】三、使用Java连接MongoDB 实验目的实验内容练习1、开启Eclipse&#xff0c;创建Java Project项目&#xff0c;命名为Mongo12、添加项目依赖的jar包3、创建类MongoDemo4、连接数据库5、查看集合6、创建集合7、删除集合8、查看文档9、插入文档10、更新文档11、删除文档…...

【C++】通讯录的基本实现,附有源码分享

目录 1、运行环境 2、系统实现功能 2.1菜单功能 2.2退出通讯录功能 2.3添加联系人功能 2.4显示联系人功能 2.5删除联系人功能 2.6查找联系人功能 2.7修改联系人功能 2.8清空联系人功能 2.9动态扩容功能 2.10选择优化功能 2.11文件操作 3、源码分享 1、运行环境 …...

UI 自动化测试 —— selenium的简单介绍和使用

selenium 是 web 应用中基于 UI 的自动化测试框架&#xff0c;支持多平台、多浏览器、多语言。 提到 UI 自动化就先了解什么是自动化测试&#xff1f; 目录 1. 自动化测试 2. UI 自动化 2.1 UI 自动化的特点 2.2 UI 自动化测试的优缺点 2.3 UI 自动化测试的使用对象 2.4…...

mybatisPlus中apply的使用以进行联表等复杂sql语句

在 MyBatis-Plus 中&#xff0c;apply() 方法可以用于添加任意的 SQL 片段&#xff0c;包括联表查询。因此&#xff0c;你可以使用 apply() 方法来处理各种类型的联表查询。 使用 apply() 方法的好处是可以在查询条件中直接添加原生的 SQL 片段&#xff0c;而不受 MyBatis-Plu…...

自学Python技术的方法

目录 一、Python技术介绍 二、学习前的准备工作 三、学习时的具体操作 四、如何巩固学习 Python是一种高级编程语言&#xff0c;被广泛用于软件开发、数据分析、人工智能和科学计算等领域。它于1991年由Guido van Rossum创建&#xff0c;并且其简洁、易读的语法以及丰富的标…...

python熟悉python基础语法,了解html网络结构,了解json格式数据,含有字符串

前言 Python网络爬虫是利用Python编写的程序&#xff0c;通过自动化地访问网页、解析html或json数据&#xff0c;并提取所需信息的技术。下面将详细介绍一些与Python网络爬虫相关的重要知识点。 1、Python基础语法&#xff1a; 变量和数据类型&#xff1a;学习如何声明变量以及…...

linux mail -s发送邮件异常解决

异常&#xff1a; Error initializing NSS: Unknown error -8015. "/root/dead.letter" 11/301 . . . message not sent. 出现此问题&#xff0c;大概率是和证书相关。如果没有安装证书&#xff0c;请先安装&#xff1a; 1&#xff0c;下载 yum -y install mailx …...

Netty核心技术七--Google Protobuf

1.编码和解码的基本介绍 编写网络应用程序时&#xff0c;因为数据在网络中传输的都是二进制字节码数据&#xff0c;在发送数据时就需要编码&#xff0c;接收数据时就需要解码 codec(编解码器) 的组成部分有两个&#xff1a;decoder(解码器)和encoder(编码器)。encoder 负责把…...

【Docker】Docker常用命令总结

文章目录 一、帮助命令二、镜像命令三、容器命令四、常用的其他命令 在开发过程中&#xff0c;经常涉及到 docker 的相关操作&#xff0c;本文对常用的指令进行汇总。 一、帮助命令 docker version # 显示docker版本信息 docker info # 显示docker系统信息&#xff…...

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…...

AWS Lambda 介绍

计算服务的演进 EC2------Container-------Lambda 虚拟机---容器--------------serverless无服务器架构 什么是AWS Lambda&#xff1f; AWS lambda的核心是事件驱动&#xff0c;驱动可能来自&#xff0c;Alexa,SNS&#xff0c;DynamoDB&#xff0c;S3&#xff0c;Kinesis等&…...

linux之权限管理

目录 1.一.基本小语句 2.文件权限操作chmod 1.一.基本小语句 ls - a 查看此文件夹所有和隐藏内容 ls - l 查看此文件夹权限 chown 改变文所有者 2.文件权限操作chmod chmod 参数 文件名 文件的权限主要针对三类对象进行定义   owner 属主, u:针对前三个部分的权限修改   …...

【设计模式与范式:行为型】61 | 策略模式(下):如何实现一个支持给不同大小文件排序的小程序?

上一节课&#xff0c;我们主要介绍了策略模式的原理和实现&#xff0c;以及如何利用策略模式来移除 if-else 或者 switch-case 分支判断逻辑。今天&#xff0c;我们结合“给文件排序”这样一个具体的例子&#xff0c;来详细讲一讲策略模式的设计意图和应用场景。 除此之外&…...

【C++】auto_ptr为何被唾弃?以及其他智能指针的学习

搭配异常可以让异常的代码更简洁 文章目录 智能指针 内存泄漏的危害 1.auto_ptr(非常不建议使用) 2.unique_ptr 3.shared_ptr 4.weak_ptr总结 智能指针 C中为什么会需要智能指针呢&#xff1f;下面我们看一下样例&#xff1a; int div() {int a, b;cin >&g…...

数据结构练习题1:基本概念

练习题1&#xff1a;基本概念 1 抽象数据类型概念分析2. 逻辑结构与存储结构概念分析3.综合选择题4.综合判断题5.时间复杂度相关习题6 时间复杂度计算方法&#xff08;一、二、三层循环&#xff09; 1 抽象数据类型概念分析 1.可以用&#xff08;抽象数据类型&#xff09;定义…...

如何消除Msxml2.XMLHTTP组件的缓存

之前使用这个组件&#xff0c;是每隔十分钟取数据&#xff0c;没有遇到这个缓存问题&#xff0c; 这次使用它是频繁访问接口&#xff0c;就出现了一直不变的问题。觉得是缓存没有清除的问题。 网上搜了一些方案。最好的方案就是给url地址末尾给一个随机参数。用于让组件觉得是…...

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的…...

(OpenCV) 基础demo

文章目录 前言Demo图片录制播放人脸识别 END 前言 OpenCV - Open Computer Vision Library OpenCV的名声想必不用多说了。 本文介绍4个基础使用demo。分别为&#xff0c;显示图片&#xff0c;录制视频&#xff0c;播放视频和一个基于开源算法库的人脸识别小demo。 只要环境…...

using 的使用

作者: 苏丙榅 链接: https://subingwen.cn/cpp/using/ 在 C 中 using 用于声明命名空间&#xff0c;使用命名空间也可以防止命名冲突。在程序中声明了命名空间之后&#xff0c;就可以直接使用命名空间中的定义的类了。在 C11 中赋予了 using 新的功能&#xff0c;让C变得更年轻…...

Websocket、Socket、HTTP之间的关系

Websocket、Socket、HTTP之间的关系 ★ Websocket是什么&#xff1f;★ Websocket的原理★ websocket具有以下特点&#xff1a;★ webSocket可以用来做什么?★ websocket与socket区别&#xff1a;★ WebSocket与HTTP区别 ★ Websocket是什么&#xff1f; ● Websocket是HTML5下…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...