【MongoDB】三、使用Java连接MongoDB

news2024/11/20 16:23:38

【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、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive/spark数据倾斜解决方案

Hive数据倾斜以及解决方案 1、什么是数据倾斜 数据倾斜主要表现在&#xff0c;mapreduce程序执行时&#xff0c;reduce节点大部分执行完毕&#xff0c;但是有一个或者几个reduce节点运行很慢&#xff0c;导致整个程序的处理时间很长&#xff0c;这是因为某一个key的条数比其他…

stm32驱动RFID高频读卡器读取IC卡

stm32驱动RFID读卡器读取IC卡 1.介绍RFID2.RFID控制指令2.1 读IC卡号2.2 读IC卡数据块2.3 写数据到IC卡数据块2.4 读取RFID读卡器用户数据2.5 向RFID读卡器写入用户数据 3.代码实例3.1 rfid.c 源文件3.2 rfid 头文件 4. 结语 1.介绍RFID RFID&#xff08;Radio-Frequency Iden…

篮球比赛管理系统的设计与实现(论文+源码)_kaic

摘要 迅猛发展并日益成熟的网络已经彻底的影响了我们的方方面面。人们也确实真切的体会到了网络带给我们的便捷。本网站的设计理念在于作为一个天津大学生台球联盟推广网&#xff0c;就是能够尽可能详细地展示、介绍台球联盟资讯信息&#xff0c;播放视频&#xff0c;同时为广…

关于Eclipse代码断点调试与相关快捷键

关于Eclipse代码断点调试与相关快捷键 功能快捷键 首先关于DeBug测试的快捷键&#xff1a; Debug F5&#xff1a;Step Into&#xff08;debug&#xff09; F6&#xff1a;Step over&#xff08;debug&#xff09; F7&#xff1a;Step return&#xff08;debug&#xff09; F8&a…

化妆品行业知识分享

目录 一、产品基本信息 1.产品的组成 2. 产品分类 3.常见术语 二、产品特性 1.生产特性 2.销售特性 3.采购特性 4.研发特性 三、行业痛点与解决方案 1.行业主要存在的痛点 2.日常业务解决方案&#xff1a; 3.供应商管理解决方案&#xff1a; 四、总结 一、产品基本信息 1.产品的…

C++基础(13)——STL(stack、queue、list)

前言 本文主要介绍C中STL中的stack、queue和list容器 7.5&#xff1a;stack容器 7.5.1&#xff1a;stack容器基本概念 栈中只有顶端元素才可以被外界调用&#xff0c;因此栈不允许有遍历的行为&#xff0c;其中string、vector、deque都可以遍历 7.5.2&#xff1a;栈的常用接…

AT32F437网络通信

网络时间长了ping不通&#xff0c;解决方法 https :// https://hjha.bar:8443/vod 123456789 /play/id/32052/sid/1/nid/1.html

PYTHON强制升级openpyxl方法--已验证有效

当执行for i, row in enumerate(worksheet.iter_rows(min_row1, max_rowworksheet.max_row,values_onlyTrue)) 出现以下错误时&#xff1a;TypeError: iter_rows() got an unexpected keyword argument ‘values_only’ 说明openpyxl版本过低&#xff0c;需要升级&#xff0c;当…

指令模板:采访大纲生成 | AIGC实践

最近收获了一些朋友的谬赞&#xff0c;说我“执行力太强了”&#xff0c;可以持续输出内容。 呃&#xff0c;其实吧&#xff0c;这些素材都是从我的实际工作和生活中来的&#xff0c;只是稍加整理而已。 要说起来&#xff0c;AIGC的出现已经完全改变了我的工作方式。在遇到问题…

《中国多媒体与网络教学学报》简介及投稿邮箱

《中国多媒体与网络教学学报》简介及投稿邮箱 中国多媒体与网络教学学报 创刊于2002年&#xff0c;是经国家新闻出版总署批准的中央级电子期刊,是国内最早以多媒体形式发表中小学信息化教学改革前沿成果的学术期刊群,是教育部重点成果的发表平台之一,由教育部主管、清华大学主…

谈找工作线上途径

谈找工作 目录概述需求&#xff1a; 设计思路实现思路分析1.51job2.拉勾网 猎聘网站智联招聘网站后记 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait…

DDOS攻击防御实战(威胁情报)

背景&#xff1a; 不知道大家最近有没有关注到&#xff0c;百度云CDN不支持免费了&#xff0c;网站安全问题越来越严重了…… 常见攻击 DDOS Distributed Denial of Service 分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击&#xff0c;使攻击的目标无法正常使用&…

C++基础(14)——STL(set、pair、map)

前言 本文主要介绍C中STL中的set、pair和map容器 7.8&#xff1a;set、multiset容器 7.8.1&#xff1a;set容器基本概念、构造函数和赋值&#xff08;、insert&#xff09; set容器中所有元素都会在插入的时候自动排序 set和multiset的区别 set不允许有重复的元素&#xff…

i5/i7该选谁?差距大不大?i5-13490F、i7-13790F深度测试

一、i5、i7还是性能差不多吗&#xff1f; 自从2017年Zen架构发布开始&#xff0c;Intel与AMD在CPU性能竞争上就进入了激烈的内卷。随着双方在产品竞争上日趋白热化&#xff0c;同世代不同档次CPU产品的性能差距被明显拉大。 那么&#xff0c;过去那种“i5、i7性能差不多&#x…

self-attention(transformer)

自注意力机制 在传统的CNN中&#xff0c;都是对感受野内部的事情进行关联后理解。 感受野实际上关乎了模型对全局信息的理解。 而本质上&#xff0c;感受野是一种特殊的注意力机制&#xff0c;也就是说感受野是一种受限的、具有特定参数的注意力。 之前的内容如DANet&#…

基于webpack开发vue-cli

一、vue-cli开发 1. 项目整体目录 2. package.json {"name": "vue-cli","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "npm …

机器学习常识 23: U-Net

摘要: U-Net 集编码-解码于一体, 是一种常见的网络架构. 图 1. U-Net 例. 如图 1 所示, U-Net 就是 U 形状的网络, 前半部分 (左边) 进行编码, 后半部分 (右边) 进行解码. 编码部分, 将一个图像经过特征提取, 变成一个向量. 前面说过: 深度学习本质上只做件事情, 就是特征提取…

【ESXi 7.x/8.x】ESXi 配置备份与还原

目录 1. 使用 ESXi命令行备份数据&#xff08;1&#xff09;将已更改的配置与持久存储同步&#xff08;2&#xff09;备份 ESXi 主机的配置数据&#xff08;3&#xff09;下载配置文件通过浏览器下载配置文件通过wget命令下载 &#xff08;4&#xff09;注意事项 2. 还原 ESXi …

基于Java班主任助理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

一直报错npm ERR! cb() never called!删除缓存仍然不行

看到npm下载包出错, 通常我们会手动删除node-modules这个文件夹来解决. 但是往往现实很骨感, 然后我们会找网上各种方法来解决, 比如这篇文章 但是当所有方法都尝试了一遍, 仍然还是出错, 这到底是什么原因呢? 可以使用npm config ls 查看一下我们电脑上是否会有一份.npmrc…