一篇文章带你掌握MongoDB

news2024/11/15 19:48:23

文章目录

  • 1. 前言
  • 2. MongoDB简介
  • 3. MongoDB与关系型数据库的对比
  • 4. MongoDB的安装
  • 5. Compass的使用
  • 6. MongoDB的常用语句
  • 7. 总结

1. 前言

本文旨在帮助大家快速了解MongoDB,快速了解和掌握MongoDB的干货内容.

2. MongoDB简介

MongoDB是一种NoSQL数据库,采用了文档数据库模型。它以BSON(Binary JSON)格式存储数据,支持动态模式和灵活的查询语言。MongoDB具有以下特点:

  1. 文档存储:MongoDB以文档(Document)的形式存储数据,每个文档是一个自包含的数据单元,类似于关系型数据库的行。
  2. 动态模式:MongoDB不需要预定义的表结构,可以根据需要动态添加字段,更加灵活。
  3. 分布式存储:MongoDB支持分片和副本集等方式进行水平扩展和高可用性部署。
  4. 强大的查询语言:MongoDB支持丰富的查询语言,包括嵌套查询、索引和聚合操作等,可以满足各种查询需求。

MongoDB适用于需要处理半结构化数据、大规模数据和高并发读写的场景,例如Web应用的用户数据、日志数据的存储和分析等。它提供了灵活的数据模型和强大的查询能力,使得开发者可以更加高效地处理复杂的数据操作。

NoSQL(Not Only SQL)是一种非关系型数据库(Non-Relational Database)的分类,与传统的关系型数据库(RDBMS)相对应。NoSQL数据库的设计目标是解决关系型数据库在大规模数据存储和高并发读写方面的限制。

3. MongoDB与关系型数据库的对比

MongoDB是一个文档型数据库,而关系型数据库则是一种基于表格的数据库。
在这里插入图片描述
可以看到还是有许多相似的地方,但也有很多不同.MongoDB提供了更好的可扩展性和大数据处理能力,而关系型数据库则更适用于小型企业和机构级别的数据处理。

4. MongoDB的安装

官网:MongoDB:应用程序数据平台 | MongoDB
在这里插入图片描述
选择Community Server
在这里插入图片描述
选择版本以及对应的操作系统后,点击 Download 即可开始安装
在这里插入图片描述
下载完成之后打开安装包,一直点击 next 就可以了
在这里插入图片描述
安装完成之后,桌面会出现一个MongoDB的GUI工具Compass的快捷方式
在这里插入图片描述

5. Compass的使用

双击打开,会看到以下界面:
点击Connect即可连接本地的MongoDB服务
在这里插入图片描述
在这里插入图片描述
注: admin,config和local为MongoDB默认的数据库

此外在Compass的下方有一个mongosh的交互式命令行终端,就可以输入一些命令来操作MangoDB
在这里插入图片描述
在这里插入图片描述

6. MongoDB的常用语句

查看数据库:

show databases
show dbs

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

选中/创建数据库:

use [database]

注: 即使这个数据库不存在也可以运行.如果数据库不存在,则创建数据库,否则切换到指定数据库。
示例:
在这里插入图片描述
可以看到虽然创建了game数据库,但是查看数据库时并没有这个数据库.这是因为数据库中没有数据

接下来我们来插入几条数据,但首先先来了解一下MongDB中文档的概念:

MongoDB集合是MongoDB文档数据存储的基本单位,类似于关系数据库中的表。它是一个无架构的容器,可以存储任意的文档数据。MongoDB的文档数据是使用JSON格式表示的,它们可以包含不同的字段和值。

插入一个文档到集合中:

db.collection.insertOne()

示例:

在这里插入图片描述

db.user表示创建了一个名为user的集合

insertOne():用于插入文档到集合中

返回值:

  • acknowledged: 表示这条数据是否插入成功,成功返回true
  • insertedId: 全局唯一id,由Mongodb生成

查询集合中的数据:

db.collection.find()

示例:

在这里插入图片描述
MongDB中的不同文档的结构并不要求相同,如下图所示:
在这里插入图片描述
可以看到一条数据有age字段,另一条数据没有age字段.,这也是与MySQL中的行不一样的地方.
插入多条数据:

db.collection.insertMany()

示例:

在这里插入图片描述
在这里插入图片描述
限制查询返回结果的数量:

limit()

示例:
在这里插入图片描述
排序查询结果:

sort()

示例:

在这里插入图片描述
sort中的参数是一个对象,要传入一个字段,为比较的对象. 1表示升序,-1表示降序.

当然也可以比较多个参数,只需要再参数的后面再加一个参数就可以了

如下所示:

db.user.find().sort({age:1,name:1})

跳过一些查询结果:

skip()

示例:

在这里插入图片描述
表示的是查询按照年龄升序 ,并跳过前两条的数据

一般来说 skip函数都是和sort函数一起使用的,用来实现分页的功能

条件查询:

find({field:value})

示例:

查询年龄为20的用户
在这里插入图片描述
注意如果输入的是"20",那么就不会产生任何数据,因为MongoDB中的数据类型是非常严格的
在这里插入图片描述
其中第二个字段后面的数据1,表示要返回的字段

这里的_id是MongoDB自动返回的,如果不想返回,可以在第二参数中加上_id,值为0

在这里插入图片描述
MongoDB中也可以使用一些运算符来实现复杂查询的语句

例如返回年龄大于18的用户在这里插入图片描述
其中$gt就是>,常见的运算符如下:

lt:less than 小于
le:less than or equal to 小于等于
eq:equal to 等于
ne:not equal to 不等于
ge:greater than or equal to 大于等于
gt:greater than 大于

$in()可以查询某个字段的值是否在一个数组中

例如查询年龄为18和20的用户
在这里插入图片描述
当然也可以使用$nin()查询某个字段的值是否不在一个数组中

$exists()判断某个字段是否存在

查询具有age字段的用户:其中1或true表示存在,0和false表示不存在在这里插入图片描述
其中1或true表示存在,0和false表示不存在
以下也是一些常用的MongoDB命令:

  • $exists()只能判断某个字段是否存在,但不能判断某个字段的值是否存在
  • $and:[{条件1},{条件2}]:逻辑与
  • $or:[{条件1},{条件2}]:逻辑或
  • $not:{条件}: 逻辑非
  • $regex:/expression/:正则表达式
  • countDocuments():统计文档数量
  • findOne({filter}):查询满足条件的一条数据
  • updateOne():更新满足条件的一条数据
  • updateMany():更新满足条件的多条数据
  • deleteOne():删除满足条件的一条数据
  • deleteMany():删除满足条件的多条数据

7. 总结

MongoDB是一个功能强大的数据库管理系统,适合处理具有高度的非结构化数据和数据量的应用程序。它用于各种用例,包括Web应用程序、大数据等,具有高可伸缩性、高性能、高可用性、分布式和非结构化数据存储等特点。

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

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

相关文章

每日一练2023.11.30——谁先倒【PTA】

题目链接:谁先倒 题目要求: 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了&#xff0…

只需根据接口文档,就能轻松开发 get 和 post 请求的脚本

一般的接口文档描述的内容: 开发get请求的脚本,接口文档的描述如下: 在loadrunner里面创建一个空脚本: 在action空白处,点击insert—>step 输入web_custom_request,双击选择该函数,填入如下几…

教育企业CRM选择技巧

教育行业的发展一波三折,要想在激烈的赛道脱颖而出,就需要有一套有效的CRM系统,来帮助教育机构提升招生效率、增加学员留存、提高教学质量。下面说说,教育企业选择CRM系统要具备的四大功能。 1、招生管理功能 教育机构的首要目标…

keepalive路由缓存实现前进刷新后退缓存

1.在app.vue中配置全局的keepalive并用includes指定要缓存的组件路由name名字数组 <keep-alive :include"keepCachedViews"><router-view /></keep-alive>computed: {keepCachedViews() {console.log(this.$store.getters.keepCachedViews, this.…

因为jsp for循环的一个空格引起的错误

<c:forEach items"${user.role} " var"role"> <c:forEach items"${user.role}" var"role"> 去掉空格正确显示 &#xff0c;为此排查了2个小时代码逻辑

怎样搭建好Google关键词广告账号结构

搭建好Google关键词广告账号结构对于实现广告效果的最大化至关重要。本文小编将为您提供一些关于如何搭建好Google关键词广告账号结构的建议和步骤。 1、设定目标和策略 在开始搭建广告账号结构之前&#xff0c;首先需要明确您的广告目标和策略。您想要增加网站流量还是提高转…

设计模式之装饰模式(2)--有意思的想法

目录 背景概述概念角色 基本代码分析❀❀花样重难点聚合关系认贼作父和认孙做父客户端的优化及好处继承到设计模式的演变过程 总结 背景 这是我第二次写装饰模式&#xff0c;这一次是在上一次的基础上进一步探究装饰模式&#xff0c;这一次有了很多新的感受和想法&#xff0c;也…

盘点:信息化、智能化、可视化监控系统EasyCVR能给高危行业带来哪些好处

在当前社会中&#xff0c;高危行业的安全问题备受关注。为了有效预防事故的发生&#xff0c;信息化、智能化和可视化监控系统被广泛应用于各个高危行业。本文将从多个角度分析并总结&#xff0c;这些系统给高危行业带来的好处。 一、实时监控与预警能力 国标GB28181视频平台E…

【Java Web学习笔记】0 - 技术体系的说明

B/S软件开发架构简述 B/S架构 1.B/S框架&#xff0c;意思是前端(Browser浏览器)和服务器端( Server )组成的系统的框架结构。 2. B/S架构也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分。 3.示意图 ●前端 前端开发技术工具包括三要素: HTML、CSS和Jav…

WIN10系统自带硬盘测速工具使用

前段时间在捣腾电脑硬盘这一块&#xff0c;因为现在固态硬盘价格比较低了&#xff0c;所以想换一下&#xff0c;给自己的电脑升个级。现在硬盘有多种接口&#xff0c;常见的就是SATA&#xff0c;mSATA&#xff0c;m.2, NVME&#xff0c;PCIE。这里PCIE的接口是直连的&#xff0…

基于Java SSM框架+Vue实现汉服文化平台网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现汉服文化平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将…

zookeeper 单机伪集群搭建简单记录(实操课程系列)

本系列是zookeeper相关的实操课程&#xff0c;课程测试环环相扣&#xff0c;请按照顺序阅读测试来学习zookeeper 1、官方下载加压后&#xff0c;根目录下新建data和log目录&#xff0c;然后分别拷贝两份&#xff0c;分别放到D盘&#xff0c;E盘&#xff0c;F盘 2、data目录下面…

甘草书店记:2023年10月24日 星期二 「在完美和高效之间寻求平衡」

书店装修设计图出了第一版&#xff0c;不能够完全满意也在不在预料之外。 中国人的哲学是中庸的哲学。在高效中去追逐完美&#xff0c;在追逐完美中提升效率。 分享余华先生在节目中的一段话&#xff1a; 一种阅读和一本书的相遇有时候也是一种缘分。但也可能就是所有人都说…

航城街道携股份公司一行莅临联诚发考察调研

11月30日&#xff0c;深圳市宝安区航城街道组织开展主题为“交流促发展携手创未来”的调研服务日活动。当日上午&#xff0c;航城街道委员刘甜携集体资产监管办、黄田股份合作公司、钟屋股份合作公司、草围股份合作公司、鹤洲股份合作公司、九围股份合作公司、后瑞股份合作公司…

习题补充整理

目录 一、自己封装response 二、在响应头中放数据 HttpResponse redirect ​编辑 render JsonResponse 三、函数和方法区别 ----》绑定方法区别 四、上传图片和开启media访问 五、页面静态化(解决访问率高的问题) 一、自己封装response 第一步&#xff0c;在app01下…

【注册表】Sublime Text添加到右键菜单

官网下载 windows下地地址: http://www.sublimetext.com/download_thanks?targetwin-x64设置右键菜单和菜单小图标 win R打开运行&#xff0c;并输入regedit打开注册表编辑器依次找到HKEY_CLASSESS_ROOT -> * -> Shell&#xff0c;下面新建项&#xff0c; 这个项的名…

制作rpm安装包时如何处理升级

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 升级命令执行顺序重要参数版本问题注意事项 升级命令 rpm安装包的升级…

web前端tips:js继承——寄生组合式继承

上篇文章给大家分享了 js继承中的 寄生式继承 web前端tips&#xff1a;js继承——寄生式继承 今天给大家分享一下 js 继承中的 寄生组合式继承 寄生组合式继承 寄生组合式继承是一种结合了寄生式继承和组合式继承的方式&#xff0c;它的目标是减少组合式继承中多余的调用父…

力扣295. 数据流的中位数(java,堆解法)

Problem: 295. 数据流的中位数 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 由于该题目的数据是动态的我们可以维护两个堆来解决该问题 1.维护一个大顶堆&#xff0c;一个小顶堆 2.每个堆中元素个数接近n/2&#xff1b;如果n是偶数&#xff0c;两个堆中的数据个数…

最简单的链路追踪收集器

链路追踪可帮助您快速了解程序服务之间的调用关系&#xff0c;并快速洞悉内部发生的情况。主流的链路追踪系统有zipkin,jaeger,skywalking等&#xff0c;由于opentelemetry的存在&#xff0c;都具有opentelemetry的转换器。 我们利用opentelemetry来进行zipkin,jaeger,skywalk…