MongoDB学习笔记三

news2025/1/10 16:32:23

目录

1.数据库增删

1.1数据库创建

 1.2数据库删除

 2.集合增删

2.1创建集合

 2.2删除集合

 3.文档增删改查

3.1查询文档

3.2创建文档

3.3删除文档

3.4更新/修改文档


1.数据库增删

1.1数据库创建

数据库创建语法格式:

use DatabaseName

在mongodb中使用use与在mysql中使用use database一致,都是选择需要使用的数据库;不同的是当mongodb中不存在该数据库,那么它会自动创建该数据库;

mongodb中默认的数据库为 test,如果你没有创建新的数据库,那么你所创建的集合将默认存放在 test 数据库中

注意:新建的数据库中,如果没有集合,那么它就是空的数据库,下次重新选择时又会重新创建,如果要保存该数据则请随便插入一个集合;

 1.2数据库删除

数据库删除语法格式:

db.dropDatabase()

删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名

下面我们来删除demo数据库,以图片为例

 2.集合增删

2.1创建集合

创建集合语法:

db.createCollection(collectionName);

db.createCollection(collectionName, options);

直接使用db.createCollection(collectionName),则集合会使用默认的参数创建指定名字的集合

使用db.createCollection(collectionName, options),则需要手动指定参数,例如:

db.createCollection("demo", {size: 10000, max:10000})

options参数说明:

字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。
autoIndexId布尔3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值,即字节数。
如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集合中包含文档的最大数量。

 2.2删除集合

删除集合语法:

db.collectionName.drop()

删除成功返回true,删除失败返回false;

我们可以通过show tables或show collections来查看已有的集合

 3.文档增删改查

3.1查询文档

语法格式:

db.collectionName.find()

db.collectionName.find().pretty()  // 格式化显示所有文档

查询所有:

db.collectionName.find()

查询指定条件:

db.collectionName.find({"age":24})

 多条件查询:

db.collectionName.find({key:value,key:value,key:value,...})

db.collectionName.find({$or:[{key:value},{key:value},....]})

and查询:

or查询:

 and和or查询联合使用:

 大小条件语句查询:

操作格式示例sql中的类似语句
等于{<key>:<value>}db.col.find({"key":"value"}).pretty()where by = 'key'
小于{<key>:{$lt:<value>}}db.col.find({"key":{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({"key":{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({"key":{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({"key":{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({"key":{$ne:50}}).pretty()where likes != 50

3.2创建文档

创建文档语法格式:

db.collectionName.insert(document)

db.collectionName.save(document)

save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。

insert(): 若插入的数据主键已存在,则抛出 org.springframework.dao.DuplicateKeyException 

异常,提示主键重复,不保存当前数据。

3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()

insertOne():

 insertMany():

以上是一般的正常插入语句写法,接下来我们玩点高级的,通过不知道大家有主要到我上面插入语句中写的document吗?是的,接下来我们使用document对象插入,展示:

除了我这里用的insertOne()方法你当然也可以使用insert(document)或save(document)

当然你也可以写多个document,然后使用insertMany()插入

语法insertMany([document1,document2,do........])

3.3删除文档

语法格式:

db.collectionName.remove()

删除示例:

需要注意, 直接使用remove()会删除所有的数据,如果只需要删除一条数据那么需要加上remove({},1)

3.4更新/修改文档

语法格式:

db.collectionName.update(<query>,<updatedata>)

db.collectionName.save(document)

详细的介绍属性如图:

参数说明:

query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

实际上使用的时候没有这么复杂,我们只需要在(<query>,<updatedata>)query中输入条件,在updatedata中输入更新数据即可,例如:

如此更新只会修改一条数据,所以我们需要为他添加另一条参数实现批量修改,如图:

 更多实例:

说明语法演示
只更新第一条记录db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加进去db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

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

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

相关文章

油猴配置教程

文章目录 目录 文章目录 前言 一. 安装油猴 二、使用步骤 三.安装插件 (ChatGPT) 四. 脚本推荐 前言 作者简介: zuiacsn 座右铭: 抱怨身处黑暗,不如提灯前行 内容介绍: 油猴 油猴&#xff08;Tampermonkey&#xff09;指的是一个流行的用户脚本管理器&#xff0c;它能使…

智能照明“暗潮涌动”

在技术持续升级、消费者观念发生转变等多方因素的共同影响下&#xff0c;与智能相关的设备销量逐渐走俏。能够为人们带来便捷、舒适的智能家居产品也逐渐走进千家万户&#xff0c;深入到人们的日常生活中。在此背景下&#xff0c;智能家居行业日渐火热&#xff0c;实现了飞速发…

SLMi331数明深力科带DESAT保护功能隔离驱动应用笔记

SLMi33X系列SLMi331数明深力科首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器。 SLMi331的DESAT阈值为6.5V&#xff0c;其最大驱动电…

Facebook广告投放和海外品牌推广(KOL)哪个未来发展好一点?

在当今数字化时代&#xff0c;品牌推广和营销策略正不断演变和创新。在海外市场拓展和品牌推广方面&#xff0c;Facebook广告投放和海外品牌推广&#xff08;KOL&#xff09;已经成为两种备受关注的策略。 1.Facebook广告投放的优势&#xff1a; 广告定位精准&#xff1a;Faceb…

究诸经典,探寻大模型演变之踪迹

编者按&#xff1a;在仅仅五年的时间里&#xff0c;大语言模型、transformers几乎完全改变了自然语言处理领域。 为了便于快速、扎实、深入地学习大语言模型&#xff0c;本文整理一个简单的经典学术资料列表&#xff0c;供正在入门中的机器学习研究人员和开发者参考。 以下是译…

JAVA基础---集合

一、树结构 二叉树、二叉查找树、平衡二叉树、红黑树 1、数据结构遍历方式 1、前序遍历&#xff1a;当前节点、左子节点、右子节点 2、中序遍历&#xff1a;左子节点、当前节点、右子节点 3、后序遍历&#xff1a;左子节点、右子节点、当前节点 4、层序遍历&#xff1a;一层…

几个提高工作效率的 Python 自动化脚本,收藏!

在这个自动化时代&#xff0c;我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情&#xff0c;让它自动化&#xff0c;让你的生活更轻松。 那么在本文中&#xff0c;我将向您介绍 10 个 Python 自动化脚本&#xff0c;以使你的工作更加自动化&#…

javaWeb ssh小提琴管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh小提琴管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,…

TypeScript实现贪吃蛇游戏

TS实现贪吃蛇游戏 文章目录 TS实现贪吃蛇游戏[toc]1.项目效果2.项目梳理3.项目准备4.主体页面结构5.CSS样式6.TS逻辑6.1 食物逻辑6.2 蛇逻辑6.3 记分板逻辑6.4 游戏控制器逻辑6.5 程序入口ts 1.项目效果 项目体验 2.项目梳理 这个小游戏主要包括积分面板&#xff0c;食物&…

2023上半年软件设计师真题评析

2023年上半年软设是2018年改版后的一次考试&#xff0c;以下内容根据考完回忆结合网上暂时流传的真题(不保证完全正确)整理&#xff0c;主要侧重相关知识点罗列&#xff0c;少讲或不讲具体的答案&#xff0c;主要给自己的计算机基础查漏补缺&#xff0c;同时也希望对大家有帮助…

基于AI技术的APP外包开发流程

AI技术发展非常迅速&#xff0c;最近一年有了巨大的技术突破&#xff0c;一些专家认为可以基于现在的AI技术将APP再重做一遍&#xff0c;这无疑将给创业者带来巨大机会。今天和大家分享使用AI重做一个APP的步骤和注意事项&#xff0c;希望对大家有所帮助。 需要遵循以下步骤和注…

5601-RIO-MCM 消除Modbus网络上的通信错误

当端口配置为从端口时&#xff0c;此参数指定内部用作Holding的零地址或起点的数据库地址 寄存器&#xff08;16位整数&#xff09;数据。Modbus功能读取保持寄存器数据代码3命令&#xff08;读取保持寄存器&#xff09;和由功能代码6写入&#xff08;预设单寄存器&#xff09;…

《论文阅读》在跨语料库上利用集成提示完成零样本的文本情感分类 COLING2022

《论文阅读》在跨语料库上利用集成提示完成零样本的文本情感分类 COLING2022 前言相关知识hubness problem零样本学习灵感来源验证点零样本情感分类的自然语言推理情感提示情感集成自我总结问题前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中…

【自然语言处理】- 作业6: 面向新冠肺炎的社会计算应用

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

Mybatis-X插件自动生成代码的使用详解(小白专用)

Mybatis-X插件自动生成代码的使用详解&#xff08;小白专用&#xff09; 1、 使用idea链接数据库 详见使用idea链接数据库并生成实体类 idea链接数据库之后也提供了一个生成实体类的方法&#xff0c;见↑ 2、安装mybatis-X插件 File–>Settings–>Plugins–>Marke…

c++11基础

文章目录&#xff1a; c11简介统一的列表初始化{}初始化std::initializer_list 声明autodecltypenullptr 范围for循环STL中的一些变化arrayforward_listunordered_map和unordered_set 字符串转换函数 c11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0…

【JavaScript数据结构与算法】数组类(电话号码的字符组合)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…

小红书达人矩阵怎么布局,达人矩阵分配

随着互联网营销学的兴起&#xff0c;一方面使得生意越来越好做&#xff0c;但同时也加大了做生意的门槛&#xff0c;属于是良币驱逐劣币。而达人矩阵就是良币的一种表现方式&#xff0c;今天来和大家来分享下小红书达人矩阵怎么布局&#xff0c;达人矩阵分配。 达人矩阵是什么?…

重塑工作场所:后疫情时代组织韧性的8个策略

经济寒冬来临&#xff0c;倒挂的收益率曲线、持续上升的利率以及层出不穷的裁员公告等等&#xff0c;让经济学家们得出一个结论&#xff1a;全球经济正在衰退。然而&#xff0c;经济下行周期可能是卓越公司改变其命运的最佳时机。有研究表明&#xff0c;相对于非经济衰退时期&a…

JavaSE_day40(字节流复制图片,字节流与File实现复制目录到另一个目录下)

1 A.java * 1.分别使用字符流和字节流复制图片&#xff08;底层是二进制文件&#xff0c;如图片 视频 音频等&#xff09; * * 二进制文件只能使用字节流进行复制&#xff08;使用windows自带记事本打开读不懂的&#xff09; * * 文本文件的复制即可使用…