一篇文章带你掌握MongoDB

文章目录

  • 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.mzph.cn/news/185927.shtml

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

相关文章

arthas使用

官方文档 Github: https://github.com/alibaba/arthas 文档: https://arthas.aliyun.com/doc/ Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断…

C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现

常用字符函数和字符串函数的了解和模拟实现 前言1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strcat的使用和模拟实现6. strcmp的使用和模拟实现7. strncpy函数的使用8. strncat函数的使用9. strncmp函数的使用10. strstr的使用和模拟…

MatchPyramid实现文本匹配

引言 今天利用MatchPyramid实现文本匹配。 原论文解析→点此←。 MatchPyramid 核心思想是计算两段文本间的匹配矩阵,把它当成一个图形利用多层卷积网络提取不同层级的交互模式。 匹配矩阵是通过计算两段输入文本基本单元(比如字或词)之间相似度得到的&#xf…

43.0BaseDao抽取dao公共父类

43.1. 回顾 1. 把数据库表中查询的结果封装到一个实体类中。 命名规则:类名和表名一致 类中属性和表的字段对应。 表中的一条记录对应实体的一个对象 多条记录→集合 43.2. 正文 目录 43.1. 回顾 43.2. 正文 43.3. 抽取dao公共父类。 43.4. 引入数据源 43.3. 抽取dao公共…

C#测试开源运行耗时库MethodTimer.Fody

微信公众号“dotNET跨平台”的文章《一个监控C#方法运行耗时开源库》介绍了支持测量方法耗时的包MethodTimer.Fody,使用方便,还可以自定义输出信息格式。本文学习并测试MethodTimer.Fody包的使用方式。   新建控制台程序,通过Nuget包管理器…

Python链式调用技巧:代码流畅无缝连接

更多资料获取 📚 个人网站:ipengtao.com 链式调用是一种编程风格,它允许将多个方法调用连接在一起,形成一个连贯的操作链。在Python中,链式调用常常用于使代码更简洁、易读,尤其在处理数据处理和函数式编程…

web:ics-05(本地文件包含漏洞、preg_replace函数/e漏洞、php伪协议读取文件)

题目 打开页面显示如下 只有这个页面能打开 显示如下 用dirsearch扫一下 查看了一下,发现没什么用 查看页面源代码 返回了,写入的参数,猜测可能有文件包含漏洞 用php伪协议读取文件 构造payload ?pagephp://filter/readconvert.base64-en…

WordPress定时文章自动发布技巧

对于许多WordPress站长来说,文章的管理和发布计划往往是一个头疼的问题。随着内容的不断增加,时间表的调整以及发布频率的把握成为了让人焦头烂额的挑战。 一、时间管理难题 对于博客管理员来说,时间管理一直是个令人困扰的问题。在忙碌的生…

Springboot-注册注解【springboot常用注解】

1.组件注册 1.1 使用的注解 Configuration:普通配置类,替代以前的配置文件,配置类本身也是容器的组件|SpringBootConfiguration:Springboot配置类,与Configuration功能一样|Bean:替代以前的Bean标签,如果没有在Bean标签内定义名字,则默认组件的名字为方法名,可以直接修改注解…

简单0成本构建一个企业内部的视频点播、培训直播、安防监控、录像管理于一体的数字视频管理体系

以前,企业要构建一套数字化的视频管理体系,把企业内部的各种视频文件、直播培训、安防监控视频都整合到一套流媒体音视频服务里面,实现统一的对外供货、对外赋能的方案,是很困难的!因为,原来这都是好几个项…

【Web】NewStarCTF Week4 个人复现

目录 ①逃 ②More Fast ③midsql ④InjectMe ⑤PharOne ⑥flask disk ①逃 一眼字符串逃逸 bad 替换为 good 字符增加一位 先构造一下试试 <?php class GetFlag {public $key;public $cmd "ls /";} $a new GetFlag(); echo serialize($a); 得到O:7:…

windows配置服务开机自启和保活

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载WinSW&#xff1f;二、使用步骤1.解压2.配置3.安装服务4.服务启停5.服务卸载6.开机自启7.保活 总结 前言 写了一个程序或者是exe&#xff0c;或者是ba…

Jmeter接口测试:jmeter_HTTP Cookie管理器看这一篇文章就够了

HTTP Cookie管理器 HTTP Cookie管理器可以像浏览器一样自动存储和发送cookie&#xff0c;以这种自 动收集的方式收集到的cookie不会在cookie manager中进行展示&#xff0c;但是运行后&#xff0c; 可以通过 查看结果树&#xff08;监听器&#xff09;可以查看到cookie信息 除…

java单例模式

文章目录 单例模式3、懒汉式 - 懒汉式非线程安全4、饿汉式 - 线程安全5、懒汉式和饿汉式区别6、双重检查锁定7、应用场景 来讲讲java单例 单例模式 java中单例模式是一种常见的设计模式&#xff0c;单例模式的写法有好几种&#xff0c;这里主要介绍三种&#xff1a;懒汉式单例…

抑制过拟合——Dropout原理

抑制过拟合——Dropout原理 Dropout的工作原理 实验观察 在机器学习领域&#xff0c;尤其是当我们处理复杂的模型和有限的训练样本时&#xff0c;一个常见的问题是过拟合。简而言之&#xff0c;过拟合发生在模型对训练数据学得太好&#xff0c;以至于它捕捉到了数据中的噪声和…

系统部署安装-Centos7-Cassandra

文章目录 介绍安装在线下载安装启动普通启动注册服务 介绍 Apache Cassandra是一个高度可扩展的高性能分布式数据库&#xff0c;旨在处理许多商用服务器上的大量数据&#xff0c;提供高可用性而没有单点故障。 安装 在线下载 &#xff08;1&#xff09;使用weget下载最新的…

mabatis基于xml方式和注解方式实现多表查询

前面步骤 http://t.csdnimg.cn/IPXMY 1、解释 在数据库中&#xff0c;单表的操作是最简单的&#xff0c;但是在实际业务中最少也有十几张表&#xff0c;并且表与表之间常常相互间联系&#xff1b; 一对一、一对多、多对多是表与表之间的常见的关系。 一对一&#xff1a;一张…

cesium不同版本对3dtiles的渲染效果不同,固定光照的优化方案

cesium不同版本对3dtiles的渲染效果不同&#xff0c;固定光照的优化方案&#xff0c;避免map.fixedLight true,导致的光照效果太强&#xff0c;模型太亮的问题。 问题来源&#xff1a; 1.Cesium1.47版本加载tileset.json文件跟Mars3d最新版加载文件存在差异效果 Cesium1.47…

基于springboot的课程作业管理系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法…

WPF绘制进度条(弧形,圆形,异形)

前言 WPF里面圆形进度条实现还比较麻烦,主要涉及到的就是动态绘制进度条的进度需要用到简单的数学算法。其实原理比较简单,我们需要的是话两条重叠的弧线,里面的弧线要比里面的弧线要宽,这样简单的雏形就出来了。 基础写法 我们可以用Path来绘制弧线,代码如下: <Gr…