JAVA操作MongoDB数据库实例教程
作者:快去吃姜 发布时间:2023-11-18 13:22:27
标签:java,mongodb,数据库
前言:
mongodb是一个基于分布式文件存储的开源数据库系统。
mongodb与我们平常使用的mysql的区别:
1.MySQL以表结构存储数据,mongodb以类JSON的文档的格式存储
2.MySQL支持表联查,mongodb不支持表联查。
3.MySQL是关系型数据库,而mongodb是非关系型数据库
4.MySQL可以支持事务,外键等,而mongodb不支持
mysql中的概念MongoDB中的概念解释tablecollention表/集合rowdocument行/文档columnfield字段indexindex索引primary keyprimary key主键,mongo中每个documentdou默认有_id字段为主键
一.java链接mongodb
1.导入mongodb驱动包
2.创建链接对象
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
3.释放资源
mongoclient.close();
二.查看数据库的所有库和集合
1.查看所有库名
//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取所有库名的迭代器
MongoIterable<String> list= mongoclient.listDatebaseNames();
for(String str:list){
System.out.println(str);//查看所有库名
}
2.查看所有集合名
//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取库对象,参数为库名
MongoDatabase db=mongoclient.getDatabase("school");
//获取当前库对象的所有集合名的迭代器
MongoIterable<String> list=db.getlistCollectionNames();
for(String str:list){
System.out.println(str);//获取所有集合名
}
//获取集合对象,参数为集合名
MongoCollention<Document> collection=db.getCollection("student");
三.对数据库进行增删改查
1.新增数据
//获取集合对象
MongoCollection<Document> collection = db.getCollection("student");
//新增时创建一个Docuement对象,以键值对的形式传入内容
Document document = new Document();
document.put("name", "张三");
document.put("age", 99);
document.put("sex", "男");
//添加一条数据,没有返回值
collection.insertOne(document);
//新增多条数据,传入一个document集合
collection.insertMany(null);
Filters类(过滤器)
删除,修改,查询时传入的筛选条件
举例: Bson eq=Filters.eq("name","张三");
Filters.eq() | 等值 |
Filters.gt() | 大于指定值(gte大于等于) |
Filters.lt() | 小于指定值(lte小于等于) |
Filters.ne() | 不等于指定 |
Filters.nin() | 不等于数组中的值 |
Filters.and() | 传入多个Bson对象,and连接 |
Filters.regex() | 模糊查询 |
Filters.exists() | 存在改字段 |
2.修改数据
//修改条件
Bson eq = Filters.eq("name","张三");
//修改匹配到的第一条
UpdateResult updateOne = collection.updateOne(
eq, new Document("$set",new Document("age",50)));
//修改匹配的多条
collection.updateMany(eq, null);
修改的返回值内容
AcknowledgedUpdateResult{matchedCount=0, modifiedCount=0, upsertedId=null}
matchedCount:代表匹配到的文档数
modifiedCount:代表被修改的文档数
upsertedId:代表修改的文档id(主键)
3.数据删除
//条件
Bson eq = Filters.eq("name","张三");
//删除一条符合的
DeleteResult deleteOne = collection.deleteOne(eq);
//删除 所有符合条件的
DeleteResult deleteMany = collection.deleteMany(eq);
删除的返回值内容
AcknowledgedDeleteResult{deletedCount=0}
deletedCount:被删除的文档数
4.查询数据
//无条件全查
FindIterable<Document> find = collection.find();
//带条件查询
Bson eq = Filters.regex("name", "张");
FindIterable<Document> find = collection.find(eq);
查询的结果集映射
这种解析方式我们必须知道文档中的各个字段名
//全查
FindIterable<Document> find = collection.find();
//创建一个实体类集合准备接收结果
List<Student> slist = new ArrayList<Student>();
//获取结果集迭代器对象
MongoCursor<Document> iterator = find.iterator();
while(iterator.hasNext()) {
Student s = new Student();
Document next = iterator.next();
s.setSname(next.getString("name"));
s.setSsex(next.getString("sex"));
s.setSid(next.getInteger("sid"));
//将结果添加至实体类集合
slist.add(s);
}
来源:https://blog.csdn.net/weixin_72696823/article/details/127135567


猜你喜欢
- Java作为一面向对象的语言,具备面向对象的三大特征——继承,多态,封装。继承顾名思义,继任,承接,传承的意思。面向对象的语言有一个好处,就
- 一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用import java.util.Arrays;
- 文件的上传与下载(一)在实现文件上传和下载之前我们需要做一些准备工作,在Apache官网去下载文件上传下载的两个组件,下载链接这里给出:co
- 作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三
- 1、什么是Spring MVC?Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用
- 一、前言1、简单的登录验证可以通过Session或者Cookie实现。2、每次登录的时候都要进数据库校验下账户名和密码,只是加了cookie
- 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能
- 目录背景介绍项目介绍需要知识点启动项目项目示范核心讲解核心原理功能分析分块上传秒传功能断点续传总结参考文献背景介绍 Breakpoint-
- pageHelper分页失效及配置问题我在使用pageHelper的系统中加入mybatis-plus, 结果所有分页都失效了原因我这边的失
- spring cloud oauth2 feign 遇到的坑关于oauth2相关的内容这里不重复描述,在spring cloud中在管理内部
- fastjson转换对象实体@JsonProperty不生效项目场景请求第三方应用 返回json数据问题描述第三方返回的数据中,存在java
- 问题描述我在接受 mq 消息的时候,需要做一个重试次数限制,如果超过 maxNum 就发邮件告警,不再重试。所以我需要对 consumer
- springboot启动是通过一个main方法启动的,代码如下@SpringBootApplicationpublic class Appl
- 1. WebView 远程代码执行漏洞描述 Android API l
- 介绍try-with-resources是Java中的环绕语句之一,旨在减轻开发人员释放try块中使用的资源的义务。它最初在Java 7中引
- 先来看看几种比较单一的方式:IMEI方式:TelephonyManager.getDeviceId():问题范围:只能支持拥有通话功能的设备
- 本文章主要讲二维数组定义,用法。1.什么是二维数组在二维数组多个元素为一维数组的数组就称为二维数组2.定义格式格式一:元素的数据类型[][]
- Idea运行单个main方法,不编译整个工程直接上图1、选择main方法类右键->create ‘类名.main&
- 普通的excel列表,easyexcel读取是没有什么问题的。但是,如果有合并单元格,那么它读取的时候,能获取数
- 在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem