一篇文章带你掌握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,一经查实,立即删除!

相关文章

react hooks学习之useMemo和useCallback

useMemo和useCallback的用法以及区别 useCallback 和 useMemo 是 React 中的两个钩子函数,它们的目标都是优化性能,但它们在用途和使用场景上有一些区别。 useCallback useCallback 用于缓存一个回调函数,并在依赖项发生变化时&#xff0c…

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的使用和模拟…

Json示例

这里写目录标题 CjsonC JSonQT json Cjson #include <stdio.h> #include <stdlib.h> #include "cjson.h" // 向JSON对象中添加数据 cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age&…

Redis 数据恢复方式说明

AOF日志 AOF(Append Only File)是写后日志,Redis先执行命令把数据写入内存,然后才记录日志。 实现原理 AOF 里记录的是 Redis 收到的每一条命令,这些命令是以文本形式保存的。 示例: set testkey testvalue 对应AOF文件 *3 $3 set $7 testkey $9 testvalue “*3”表示…

MatchPyramid实现文本匹配

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

【0241】Parser解析分析统计信息(PARSE ANALYSIS STATISTICS)

1. 执行解析分析 PG内核通过调用pg_parse_query()函数,完成用户查询字符串的解析任务。并返回List类型的参数parsetree_list。如下所示: $4 = {type = T_List, length = 1, max_length = 1, elements = 0x1fc72e0, initial_elements = 0x1fc72e0}之后运行原始解析树并处理每…

Java作业题记录

loading... 1.定义一个Person类{name, age, job},初始化Person对象数组&#xff0c;有3个person对象&#xff0c;并按照 age 从 大到 小进行排序,提示&#xff0c;使用冒泡排序Homework01.java 难点1&#xff1a;初始化数组Person[] people new Person[3]; 难点2&#xff…

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&#xff0c;使用方便&#xff0c;还可以自定义输出信息格式。本文学习并测试MethodTimer.Fody包的使用方式。   新建控制台程序&#xff0c;通过Nuget包管理器…

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

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

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

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

WordPress定时文章自动发布技巧

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

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

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

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

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

【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:…

linux统计时间

#include <time.h>//ns差 struct timespec begin {0, 0}; clock_gettime(CLOCK_REALTIME, &begin);struct timespec end {0, 0}; clock_gettime(CLOCK_REALTIME, &end);int value end.tv_nsec - begin.tv_nsec;//另一种us时间差 struct timeval tv1; gettimeofd…

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;懒汉式单例…