认识Mongodb及其Java的连接

什么是Mongodb?

        MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

优点

1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。

4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

缺点

1.MongoDB 不支持事务

2. MongoDB 不能进行多表联查

为什么学习MongoDB

MongoDB解决Mysql 的“三高”问题:

1.对数据库高并发写入需求

2.对海量数据高效率存储访问需求

3.对数据库高扩展和高可用的需求

MongoDB 实际应用:

1.社交场景,比如朋友圈,附近的人的地点的存储

2.游戏场景,比如用户当前装备,得分等

3.物流场景,比如快递的位置,状态,途径

4.视频场景,比如直播中的点赞数和互动留言等

接下来让我们去了解一下使用Java操作MongoDB

Java链接MongoDB

导入MongoDB驱动包

获取链接对象

MongoClient mongoclient = new Mongoclient("localhost", 27017);

关闭链接

mongoclient.close();

查看库,查看集合

//查看链接的MongoDB中的所有的库

MongoIterable<String>dbslist = mongoclient.listDatabaseNames();

for(string db :dbslist){
System.out.println(db);
}

//使用库查看库中的集合
MongoDatabase bbsDB = mongoclient.getDatabase("bbs");

MongoIterable<String>collist =bbsDB.listCollectionNames();

for(string s:collist){
System.out.println(s);
}

添加数据

//插入一条数据

//存入MongoDB的数据
Comment com=new comment();
com.setcontent("专家说空腹不宜吃早餐");
com.setPublishtime(new Date());
// 将数据转换为json格式
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String json=gson.toJson(com);
// 获取集合对象
MongoCollection<Document>commCol =bbsDB.getcollection("comment");
//添加一条数据--将json格式转换为decument对象
commCol.insertOne(Document.parse(json));

//插入多条数据

//存入MongoDB的数据
List<Document>dlist =new ArrayList<Document>();
//需要的数据
for(int i=0;i<5;i++){
    Comment com=new Comment();
    com.setId(Integer.tostring(i+1));
    com.setcontent("专家说空腹不宜吃早餐");
    com.setPublishtime(new Date());
    // 将数据转换为ison格式
    Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
    String json =gson.toJson(com);
    dlist.add(Document.parse(json);
}
//获取集合对象
Mongocollection<Document>commCol = bbsDB.getcollection("comment");
// 添加多条数据
commCol.insertMany(dlist);

删除数据

//删除一条数据

MongoCollection<Document>commCol = bbsDB.getCollection("comment");
Comment com =new Comment();
com.setId("1");
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
Bson bson =Document.parse(gson.to]son(com));
DeleteResult deleteOne =commCol.delete0ne(bson);
if(delete0ne.getDeletedcount()>0){
    System.out.println("删除成功");
}else{
    System.out.println("删除失败");
}

// 删除多条数据
MongoCollection<Document>commCol = bbsDB.getCollection("comment");
Comment com =new omment();
com.setcontent("专家说空腹不宜吃早餐");
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
Bson bson =Document.parse(gson.to]son(com));
DeleteResult deleteMany=commCol.deleteMany(bson);
if(deleteMany.getDeletedcount()>0){
    System.out.println("删除成功");
}else {
    System.out.println("删除失败");
}

修改数据

eq匹配等于指定值的值。
gt匹配大于指定值的值。
gte匹配大于或等于指定值的值。
lt匹配小于规定值的值。
lte匹配是小于或等于规定值的值。
ne匹配不等于指定值的所有值。
in匹配任何在数组中指定的值。
nin没有匹配数组中的规定值。
//修改多条数据
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
// 修改数据
MongoCollection<Document>commcol =bbsDB.getcollection("comment");
// 条件
Bson b1 = Filters.eq("content","专家说空腹不宜吃早餐");
System.out.println(b1);
//修改的内容
Comment comup =new Comment();
comup.setLikenum(1);
Bson b2 = new Document("$inc",Document.parse(gson.to]son(comup)));
System.out.println(b2);
// 修改多条数据
UpdateResult updateMany=commCol.updateMany(b1,b2);
System.out.println(updateMany);
if(updateMany.getModifiedcount()>0){
    System.out.println("修改成功");
}else {
    System.out.println("修改失败");
}
Hmongoclient.close();

查询数据

//全查
Mongocollection<Document> commCol = bbsDB.getcollection("comment");
FindIterable<Document> bbses = commcol.find();
MongoCursor<Document> iterator = bbses.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
mongoclient.close();

/带多个条件查询
Mongocollection<Document> commCol = bbsDB.getCollection("comment");
Bson b1 = Filters.and(
        Filters.eg("content""专家说空腹不宜吃早餐"),
        Filters.gte("likenum",7)
    );
FindIterable<Document>bbses = commcol.find(b1);
MongoCursor<Document>iterator=bbses.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
mongoclient.close();

模糊查询

MongoCollection<Document>commCol = bbsDB.getcollection("comment");
//使用正则表达式进行模糊查找
Bson b1 = Filters.regex("content","不能");
FindIterable<Document>bbses = commcol.find(b1);
MongoCursor<Document>iterator=bbses.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
mongoclient.close();

分页查询

Mongocollection<Document>>commCol = bbsDB.getcollection("comment");
// 分页查询
FindIterable<Document>bbses = commcol.find().skip(2).limit(3);
Mongocursor<Document>iterator=bbses.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
mongoclient.close();

排序查询

Mongocollection<Document>commCol = bbsDB.getcollection("comment");
// 排序1 表示升序 -1 表示降序
Bson bl = new Document("id",-1);
FindIterable<Document>bbses = commcol.find().sort(b1);
MongoCursor<Document>iterator = bbses.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
mongoclient.close();

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python中matplotlib使用4

在matplotlib中&#xff0c;可以通过绘制“饼图”来展示各类别在总体中所占的比例。 1 绘制基本“饼图” 通过matplotlib中的pie()函数绘制饼图&#xff0c;代码如图1所示。 图1 绘制基本“饼图”的代码 从图1中可以看出&#xff0c;pie()函数的参数y即为要绘制的数据&#…

使用SSMS连接和查询 SQL Server 实例

简介 SQL Server Management Studio 是用于管理SQL Server基础架构的集成环境。Management Studio提供用于配置、监视和管理SQL Server实例的工具。 此外&#xff0c;它还提供了用于部署、监视和升级数据层组件(如应用程序使用的数据库和数据仓库)的工具以生成查询和脚本。 官方…

现代RTK测量设备的高速发展及其应用前景

RTK&#xff08;实时动态定位&#xff0c;Real-Time Kinematic&#xff09;测量设备是利用GNSS&#xff08;全球导航卫星系统&#xff0c;Global Navigation Satellite System&#xff09;技术&#xff0c;通过引用基准站与移动站的数据传输机制&#xff0c;实现高精度的位置信…

基于spring boot的小型诊疗预约平台的设计与开发

TOC springboot262基于spring boot的小型诊疗预约平台的设计与开发 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进…

打靶记录12——Fawkes

靶机&#xff1a; https://download.vulnhub.com/harrypotter/Fawkes.ova这是个哈利波特系列的靶机&#xff0c;作者和本人都非常喜欢这个系列&#xff0c;因为它的漏洞和利用点都设计得很巧妙。 难度&#xff1a; 高 目标&#xff1a; 取得2个root权限 3 个flag 涉及攻…

Linux中的exec族函数

exec 系列函数用于替换当前进程的用户空间代码和数据&#xff0c;从而执行一个新的程序。调用 exec 系列函数不会创建新的进程&#xff0c;但会用新程序的代码和数据替换当前进程&#xff0c;因此调用 exec 后&#xff0c;进程的 ID 保持不变&#xff0c;但进程的行为变为执行新…

前端基础4

本节内容&#xff1a; 1.CSS的弹性布局&#xff0c;也称Flex布局 2.Vue2的生命周期 一、Flex布局 弹性布局是前端页面布局最常用的方式之一&#xff0c;通常使用四个属性。 1.创建盒子 先创建一个盒子并为其添加一些样式可以更直观的体验弹性布局&#xff0c;代码如下&#…

keepalived保活nginx1,nginx2

1 下载两个小玩意 yum -y install keepalived yum install psmisc -y 2 配置nginx1&#xff0c;2自启脚本 vim /root/shell/check-nginx.sh 我的脚本放在root/shell里 #!/bin/bash #获取nginx正在运行的进程数 npsnumps -C nginx --no-header | wc -lif [ $n…

企业级WEB应用服务器TOMCAT攻略

目录 一 WEB技术 1.1 HTTP协议和B/S 结构 二 WEB框架 2.1 web资源和访问 2.2 后台应用架构 三 tomcat的功能介绍 3.1 安装 Tomcat 3.2 tomcat的文件结构和组成 3.3 生成tomcat的启动文件 四 结合反向代理实现tomcat部署 4.1 常见部署方式介绍 4.2 利用 nginx 反向代…

第2章-01-网站中的资源介绍

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

性能测试-性能监控分析与调优(三)《实战-CPU瓶颈分析、内存问题分析、gc、tomcat性能调优,数据库监控-redis\mysql》

性能监控 使用命令监控 cpu瓶颈分析 top命令 在进行性能测试时使用top命令&#xff0c;界面如下 上图可以看出 - CPU 概况区&#xff1a; %Cpu(s): - us&#xff08;用户进程占用CPU的百分比&#xff09;, 和 sy&#xff08;系统进程占用CPU的百分比&#xff09; 的数…

热门奥运冠军代言费用贵,中小微企业怎么找冠军代言?

巴黎奥运会的热潮未退&#xff0c;这个月运动员代言的比例显著上升&#xff0c;比如游泳冠军潘展乐拿下携程等5个代言&#xff0c;孙颖莎手握可口可乐等7个代言。越来越多的企业和品牌通过冠军代言的形式来提升自身的品牌形象和市场竞争力。运动员代表着健康、拼搏和胜利&#…

thinkphp5漏洞分析之文件包含

目录 一、环境 二、开始研究 三、漏洞分析 四、漏洞修复 五、攻击总结 一、环境 thinkphp官网下载 创建 application/index/view/index/index.html 文件&#xff0c;内容随意&#xff08;没有这个模板文件的话&#xff0c;在渲染时程序会报错&#xff09; 二、开始研究 创…

【机器人学】7-2.六自由度机器人自干涉检测-计算圆柱体的上下圆心坐标【附MATLAB代码】

目录 前言 机械臂几何参数 机器等效圆柱体坐标确定 MATLAB代码 前言 上一章介绍了机器人自干涉检测的总体算法&#xff0c;提出了算法的三个核心&#xff1a; 一 根据机械臂的几何数据以及DH参数&#xff0c;确定机械臂等效的圆柱体的上下圆心坐标。 二 将一个圆柱体旋转到…

《少年白马醉春风》圆满收官 白澍“琅琊王”萧若风热度飙升

由陈宙飞执导&#xff0c;周木楠编剧&#xff0c;侯明昊、何与、胡连馨领衔主演&#xff0c;夏之光、姜贞羽特别出演&#xff0c;完颜洛绒、白澍等主演的古装武侠剧《少年白马醉春风》于昨日收官&#xff0c;大结局播出后&#xff0c;粉丝们直呼没看够&#xff01;对于剧中角色…

Qt Creator安装配置指南

1.官网下载在线安装包 官网地址&#xff1a; https://www.qt.io/download-dev#eval-form-modal 2.双击在线安装包按引导流程安装qt 3.选择自己要配置的qt环境版本 3.1如果要选中低版本的qt环境我这里安装的是qt5.15.2的(其他低版本也一样的)&#xff0c;要勾选上Archive(存…

vulnhub靶场 — NARAK

下载地址:https://download.vulnhub.com/ha/narak.ova Description:Narak is the Hindu equivalent of Hell. You are in the pit with the Lord of Hell himself. Can you use your hacking skills to get out of the Narak? Burning walls and demons are around every cor…

AI安全-文生图

1 需求 2 接口 3 示例 大模型图像安全风险探析 - 先知社区 前言 文生图模型是一种新兴的人工智能技术,它通过对大规模文本数据的学习,能够生成逼真的图像。这种模型包含两个主要组件:一个文本编码器和一个图像生成器。 文本编码器接收文本输入,并将其转换为一种数字化的表示…

JimuReport 积木报表 v1.8.0 版本发布,开源可视化报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

tomcat利用 nginx 反向代理

利用 nginx 反向代理功能&#xff0c;实现图中的代理功能&#xff0c;将用户请求全部转发至指定的同一个 tomcat 主机 利用 nginx 指令 proxy_pass 可以向后端服务器转发请求报文 , 并且在转发时会保留客户端的请求报文中的 host首部 实现 tomcat 中的负载均衡 动态服务器的…