Mongodb基础用法【总结】

news2024/10/22 12:58:44

关系型数据库和非关系型数据库的区别

关系型数据库
1.在关系型数据库中,数据都是存储在表中的,对存储的内容有严格的要求
2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则
3.由于操作的都是结构化的数据,所以我们需要使用结构化语言sql来操作
非关系型数据库
1.没有表概念 所以存储数据更加灵活 不规定字段 数据类型 是否为空 唯一标识等
2.由于数据没有严格要求,所以无需食用sql来操作

在mongodb中我们存储的数据是一个类似于json的格式叫BSON 例如 {name:wyf,age:18,sex:1}

高并发 高性能 高可用

拓展性强 不需要指定列

mongodb的缺点 对事务的支持不是很友好

mongodb中记录的就是一个文档 一个数据库中有多个集合 每个集合包含多个文档 域(就是字段) Mongodb通过嵌入式文档来代替多表联查

mongodb的基础常用命令

show dbs查询所有库 mongodb存储分为两部分 上面是内存 下面是磁盘 当我们用use 创建库的时候 我们的库现在在内存中 没有持久化到磁盘 当我们新建的库有一个文档数据的时候 就会自动存如磁盘中

mongodb默认的3个库
1.admin 就是用来存储用户信息的库
2.local这个库的数据永远不会被复制,可以用来存储先于本地单台服务器的任意集合
3.config 当mongodb用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

创建数据库
use [数据库名称] 如果use没有这个数据库就会创建一个 如果有那就切换到这个数据库

文档类似于mysql的一行数据

集合类似于mysql的table

数据库的删除
db.dropDatabase()

创建集合(集合就相当于mysql中的表)
显示创建
db.createCollection(“集合名称”) 不管里面是否有文档 先把这个集合创建出来
隐式创建

插入文档的时候 集合如果不存在 则创建集合

删除集合
db.集合名称.drop() 返回true就代表删除成功

插入文档
单条
db.集合名称.insert({})
多条
db.集合名称.insertMany({})

如果没有这个集合名称 就会被隐式创建

如果某一条数据插入失败就比较麻烦 我们想要找到具体的报错可以使用 try catch机制

1.try 将可能抛出异常的代码放在try中
2.catch 如果try块中的代码抛出异常,catch块将捕获这个异常,并允许定义错误处理逻辑

查询所有
db.集合名称.find()

查询指定的数据
db.集合名称.find({“”:””})

查询第一条数据
db.集合名称.findOne({“”:””})

投影查询 (只想显示部分的字段)
db.集合名称.find({“id”:”1”},{“id”:”1”})
这样就只会显示我们的id字段

文档更新

覆盖修改
db.集合名称.update({_id:”1”},{“要修改的字段”:”修改内容”})
如何这种方法 会把之前的文档数据全部修改

局部修改
db.集合名称.update({_id:”2”},{$set:{“修改字段”:”修改内存”}})
这种方法更改指定字段并保留其他数据

批量修改
db.集合名称.update({_id:”2”},{$set:{“修改字段”:”修改内存”}},{multi:true})就是批量修改符合类型的文档

最新的mongodb中支持updateMany的函数可以直接修改批量数据

列值增长修改
db.集合名称.update({_id:””},{$inc:{要增长的字段:1}})
代表这个字段每次增长1 _id后面的值是字符串 例如 【增长字段开始为666】增长完就是667

删除文档
db.集合名称.remove({“要删除的文档字段”:”条件”})

全部删除
db.集合名称.remove({不加条件})

分页查询
1.统计数据
db.collection.count() //查询所有
db.collection.count({“”:””}) //查询指定条件数量
2.显示指定条数
db.comment.find().limit()
3.跳过某些数据进行查询
db.comment.find().limit().skip(从第几条跳过)
4.排序
db.comment.find().sort({“条件字段”:”1”}) 1代表升序 -1代表降序

比较复制的查询

通过正则的形式实现模糊查询
1.db.comment.find({“字段”:/条件/})
mongodb复制的正则也可也接收
大于某条件
2.db.集合名称.find({条件字段:{KaTeX parse error: Expected 'EOF', got '}' at position 18: …:NumberInt(700)}̲}) ![在这里插入图片描述]…in:[“1003”]})
里面是个数组 可以包含多个条件
条件查询
and或者or
db.集合名称.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{字段:NumberInt(700)},{字段:{KaTeX parse error: Expected 'EOF', got '}' at position 19: …NumberInt(2000)}̲}]}) 点赞数大于700 小…or:[{字段:”条件”},{“字段”:”条件”}])
在这里插入图片描述
索引-Index
mongodb的索引使用的是B-Tree
单字段索引
在某一字段查询添加索引, 假如添加的字段值为30 那么先查询到索引的30 在通过30找到该集合
复合索引
列出的字段顺序具有重要意义,例如符合索引由(userid:1,score:-1)组成,则索引首先按userid正序排序,然后在内个userid的值内,再在按score倒序排序。

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

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

相关文章

家政小程序搭建,数字化市场发展下的意义

家政服务行业作为当下社会生活中不可或缺的行业,需求量在逐渐增加,行业发展也趋向多样化。 随着数字化的浪潮,家政行业逐渐向数字化、智能化升级发展,推动行业高质量发展,迎合现代化发展趋势,这一转型为行…

83.【C语言】数据结构之顺序表的尾部插入和删除

目录 3.操作顺序表 2."伪"插入顺序表的元素 分析尾部插入函数SLPushBack 代码示例 SeqList.h main.c free(指针)出错的几种可能的原因 3."伪"删除顺序表元素 2.分析尾部删除函数SLPopBack 代码示例 错误检查 两种解决办法 1.判断size是否为负…

004-按照指定功能模块名称分组

按照指定功能模块名称分组 一、说明1.现在有一个需求:2.具体做法 二、代码案例三、效果展示 一、说明 1.现在有一个需求: 需要把一个功能模块的几个功能点放在同一个文档目录下,这几个功能点分布在不同的 Controller 2.具体做法 需要把他…

如何将markdown文件转换为pdf

最近笔者在用vscode写markdown,但是提交时往往需要交pdf。所以就涉及到如何将markdown转化为pdf格式。 首先,需要在vscode上安装插件 markdown Preview Enhanced 之后在vscode的右上角即可看到下述图标,点击,vscode右半面就会显示…

C++数据结构-图的存储及邻接矩阵的代码实现

1. 什么是图 图论(graph theory) 是数学的一个分支,它以 图 为研究的对象。 图论本身是应用数学的一部分,历史上图论曾经被很多数学家各自独立建立过。关于图论的最早文字记载最早出现在欧拉 1736 年的论著中,也就是…

2024年有哪些开放式耳机值得入手?开放式耳机排行榜10强

随着技术的不断进步与消费者需求的日益多样化,开放式耳机凭借其独特的优势——如保持对周围环境的感知、减少对耳道的压力等,逐渐成为市场上的一大热点。尤其是在健康意识不断提升的今天,开放式耳机不仅为音乐爱好者提供了全新的聆听体验&…

【C++语言】全面掌握const的用法

一、const 需要怎么理解?? const修饰的变量不能够再作为左值,初始化完成之后,值不能被修改 1.1 C语言的const const 修饰的量,可以不用初始化,不叫常量,叫做常变量。 void main() {const int…

Windows git 配置

需要在git-bash的目录下,配置.ssh 的配置文件 要 .ssh 目录下的配置无法使用

Modbus TCP报错:Response length is only 0 bytes

问题描述: 使用modbus_tk库,通过Modbus tcp连接PLC时,python中的一个报错信息: Response length is only 0 bytes报错原因: 与Modbus TCP 服务端建立连接后没有断开,继续作为长连接使用,客户端…

一文掌握Cephadm部署Ceph存储集群

📚 博客主页: StevenZeng学堂 🎉 本文专栏: 一文读懂Kubernetes一文读懂Harbor云原生安全实战指南云原生存储实践指南 ❤️ 摘要:随着企业数据量的增长和存储需求的复杂化,Ceph因其高可扩展性和灵活性,能…

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候,AI员工官网(好像是部署在美国),我觉得很好奇,真的可以让AI替代人类完成工作吗?替代到什么程度呢?能以自然语言直接驱动吗? 正好手上在做爬虫项目&am…

HCIP-HarmonyOS Application Developer 习题(十六)

(判断)1、HiLink通过分布式软总线的方式连接所有设备,强能力设备可对弱能力设备进行设备虚拟化,将弱设备当做本机设备直接调用。 答案:错误 分析:HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

医院排队叫号系统

医院分诊排队叫号系统是一种广泛应用于服务行业的智能化管理系统,系统可有效地解决病人就诊时排队的无序、医生工作量的不平衡、就诊环境嘈杂等问题,它主要用于改善服务流程,提高服务效率,优化客户体验。这种系统通常包括以下几个…

HarmonyOS Next应用开发——多种方式实现图片解码

【高心星出品】 图片解码 图片处理就是将设备中保存的图片进行编辑处理然后再存储下来,整个过程需要先图片解码,图片处理,最后在图片编码保存。 图片解码指将所支持格式的存档图片解码成统一的PixelMap,以便在应用或系统中进行…

【贝加莱PLC基础教学】2.1 搜索并连接到对应的PLC(1)

【贝加莱PLC基础教学】目录大全_贝加莱plc p23 1361-CSDN博客 PLC其实和单片机差别不大,无非就是大一点的单片机。另外多加了一点点计算机网络和通讯知识,然而就是这一点点计算机网络知识让大家望而却步。 0.基础知识 在计算机网络中,我们通…

Notepad++通过自定义语言实现日志按照不同级别高亮

借助Notepad的自定义语言可以实现日志的按照不同级别的高亮&#xff1b; 参考&#xff1a; https://blog.csdn.net/commshare/article/details/131208656 在此基础上做了一点修改效果如下&#xff1a; xml文件&#xff1a; <NotepadPlus><UserLang name"Ansibl…

深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)

1. 代码实现(包含流程解释) 样本量: 8005 # # 1.导入数据集(加载图片)数据预处理# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, # 同时对图片数值进行归一化[0:1] from tensorflow.keras.preprocessing.image …

Altair官方教程——HyperMesh视觉控制

在HyperMesh中&#xff0c;模型视角控制可通过标准视图&#xff08;Standard Views&#xff09;工具栏、三维视图控制&#xff08;3D View Controls&#xff09;工具栏以及鼠标实现。 (1) 标准视图工具栏图标。 (2) 鼠标控制- 显示控制的推荐操作方法是使用鼠标。配合键盘上的 …

Lfsr32

首先分析 Lfsr5 首先要理解什么是抽头点&#xff08;tap&#xff09;&#xff0c;注意到图中有两个触发器的输入为前级输出与q[0]的异或&#xff0c;这些位置被称为 tap position.通过观察上图&#xff0c;所谓抽头点指的就是第5个&#xff0c;第3个寄存器的输入经过了异或逻辑…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么&#xff1f; 答案&#xff1a; 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库&#xff0c;文档数据库允许存储半结构化和非结构化数据&#xff0c;每个文档可以有不同的字段&#x…