一篇文章带你掌握MongoDB
文章目录
- 1. 前言
- 2. MongoDB简介
- 3. MongoDB与关系型数据库的对比
- 4. MongoDB的安装
- 5. Compass的使用
- 6. MongoDB的常用语句
- 7. 总结
1. 前言
本文旨在帮助大家快速了解MongoDB,快速了解和掌握MongoDB的干货内容.
2. MongoDB简介
MongoDB是一种NoSQL数据库,采用了文档数据库模型。它以BSON(Binary JSON)格式存储数据,支持动态模式和灵活的查询语言。MongoDB具有以下特点:
- 文档存储:MongoDB以文档(Document)的形式存储数据,每个文档是一个自包含的数据单元,类似于关系型数据库的行。
- 动态模式:MongoDB不需要预定义的表结构,可以根据需要动态添加字段,更加灵活。
- 分布式存储:MongoDB支持分片和副本集等方式进行水平扩展和高可用性部署。
- 强大的查询语言: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应用程序、大数据等,具有高可伸缩性、高性能、高可用性、分布式和非结构化数据存储等特点。
相关文章:
一篇文章带你掌握MongoDB
文章目录 1. 前言2. MongoDB简介3. MongoDB与关系型数据库的对比4. MongoDB的安装5. Compass的使用6. MongoDB的常用语句7. 总结 1. 前言 本文旨在帮助大家快速了解MongoDB,快速了解和掌握MongoDB的干货内容. 2. MongoDB简介 MongoDB是一种NoSQL数据库,采用了文档…...
删除docker镜像
随着我们拉取的镜像越来越多,镜像的管理越来越难。这时候可能就需要删除镜像了。 本关的任务是学习如何删除容器,要求学习者参照示例,将busybox:latest镜像删除。 相关知识 删除镜像 如果要删除本地的镜像,可以使用 docker rm…...
力扣 --- 删除有序数组中的重复项 II
题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...
Opencv图像处理(全)
文章目录 博主精品专栏导航备注:以下源码均可运行,不同项目涉及的函数均有详细分析说明。11、图像项目实战(一)银行卡号识别 —— sort_contours()、resize()(二)文档扫描OCR识别 —— cv2.getPerspectiveT…...
Flutter桌面应用开发之毛玻璃效果
目录 效果实现方案依赖库支持平台实现步骤注意事项话题扩展 毛玻璃效果:毛玻璃效果是一种模糊化的视觉效果,常用于图像处理和界面设计中。它可以通过在图像或界面元素上应用高斯模糊来实现。使用毛玻璃效果可以增加图像或界面元素的柔和感,同…...
基于C#实现优先队列
一、堆结构 1.1性质 堆是一种很松散的序结构树,只保存了父节点和孩子节点的大小关系,并不规定左右孩子的大小,不像排序树那样严格,又因为堆是一种完全二叉树,设节点为 i,则 i/2 是 i 的父节点,2i 是 i 的…...
ssm+vue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。
演示视频: ssmvue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三…...
什么是木马
木马 1. 定义2. 木马的特征3. 木马攻击流程4. 常见木马类型5. 如何防御木马 1. 定义 木马一名来源于古希腊特洛伊战争中著名的“木马计”,指可以非法控制计算机,或在他人计算机中从事秘密活动的恶意软件。 木马通过伪装成正常软件被下载到用户主机&…...
Pinia仓库统一管理
pinia独立维护 在src/stores文件夹下创建index.js文件,将main.js中关于pinia的语句放到index.js中 index.js文件内容: import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstate const pinia createPi…...
[论文阅读]VoxSet——Voxel Set Transformer
VoxSet Voxel Set Transformer: A Set-to-Set Approach to 3D Object Detection from Point Clouds 论文网址:VoxSet 论文代码:VoxSet 简读论文 这篇论文提出了一个称为Voxel Set Transformer(VoxSeT)的3D目标检测模型,主要有以下几个亮点: 提出了基于…...
【开源】基于Vue.js的医院门诊预约挂号系统的设计和实现
项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…...
1、Mysql架构与历史
Mysql逻辑架构 最上层是服务并不是Mysql所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构,比如连接处理,授权认证,安全等。 第二层是Mysql比较有意思的部分。大多数Mysql的核心服务都在这一层,…...
考试复习
选择20道 填空10道 判断10道 简答4-5道 编程题2道 一、选择题 1.js中更改一个input框的值: <input ida type"text" value"123456"> 通过a.value改变他的值 方法: 在script标签中通过id获得该输入框对象,然…...
使用Docker一键安装MySQL与Nginx脚本
在项目开发和部署过程中,使用Docker可以方便地快速搭建和管理数据库(MySQL)以及Web服务器(Nginx)。本教程将为你提供一份一键安装脚本。 安装Docker 首先,确保你的系统已经安装了Docker。如果没有安装&am…...
VMware系列:Vmware vSphere常见问题及解决办法
Vmware vSphere常见问题及解决办法 1. 虚拟机文件被锁,无法正常 power on故障状态:祸根:解决方法:2. 忽视掉ESXi/vCenter Server提示SSH事件的方法3. 尝试迁移一台带USB设备的VM失败故障状态:故障分析:解决方案:4. Convert Linux系统的Troublshooting过程5. vCenter Serv…...
基于web宠颐生宠物医院系统设计与实现
基于web宠颐生医院系统开发与实现 摘要:时代飞速发展,网络也飞速发展,互联网许多的行业都可以用互联网实现了,互联网已经成为了人们生活中重要的一部分,或多或少的影响着我们的生活,互联网在给我带了方便的…...
二、Gitee使用方法
目录 (1)首先可以注册一个 gitee 账号,注册很方便,自行注册 (2)登陆后进入你的主页 (3)创建仓库 (3)克隆 (4)代码提交 …...
【C++】string模拟
string讲解:【C】String类-CSDN博客 基本框架 #pragma once #include <iostream> using namespace std; namespace wzf {class string{public:// 默认构造函数string(): _str(new char[1]), _size(0), _capacity(0){_str[0] \0; // 在没有内容时仍要有终…...
python高级练习题库实验1(A)部分
文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目4代码实验结果题目总结题目1 输入一个整数,用于控制输出*的个数,输入日期,按照特定格式输出 研究下面的例子,并编写一个与这些例子完全相同的程序。 代码 import datetime# ask user for length of b…...
数据库应用:MongoDB 数据备份与恢复
目录 一、实验 1.MongoDB 数据库备份与恢复 2.MongoDB 数据表备份与恢复 二、问题 1.MongoDB有哪些命令行工具实现数据备份与恢复 一、实验 1.MongoDB 数据库备份与恢复 (1)查看版本 rootnode1:~# mongo --version(2)准备…...
AMD Ryzen硬件调试神器:5分钟掌握SMU Debug Tool的核心玩法
AMD Ryzen硬件调试神器:5分钟掌握SMU Debug Tool的核心玩法 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https…...
arXiv开始拒收综述,CS新人发论文得找人背书
一水 发自 凹非寺量子位 | 公众号 QbitAI坏了!在arXiv发综述的门,已经被关上了。arXiv接收门槛收紧后,最新受害者已急哭:arXiv的审核越来越严格了。综述论文已经不再被允许发表了,计算机科学领域彻底完蛋了,…...
QMcDump终极指南:三步解锁QQ音乐加密文件,实现音乐自由
QMcDump终极指南:三步解锁QQ音乐加密文件,实现音乐自由 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdum…...
JMeter梯度压测:精准定位系统可扩展性边界
1. 为什么“梯度式压测”不是加个线程组就完事了?很多人第一次打开JMeter,照着教程建个线程组、加个HTTP请求、跑个聚合报告,看到TPS从200涨到800就以为“压测完成了”。结果上线后流量一上来,服务直接503,监控里CPU没…...
用Python+SPSS搞定数学建模A题:从问卷数据清洗到慢性病影响因素分析全流程
PythonSPSS数学建模实战:慢性病影响因素分析与可视化全流程数学建模竞赛中,数据处理与分析能力往往决定了作品的深度与竞争力。面对慢性病影响因素分析这类典型的社会医学问题,如何高效完成从原始问卷到可视化报告的全流程?本文将…...
因果机器学习:提升时序预测鲁棒性的数据驱动与知识融合实践
1. 项目概述与核心价值在数据中心运维、供应链管理、金融风控这些领域,我们每天都在和数据打交道,核心任务就是预测未来。比如,预测服务器机房的温度会不会过热,或者预测下个月的能源消耗成本。传统机器学习模型,像XGB…...
如何彻底解决洛雪音乐音源失效问题:六音音源修复完全指南
如何彻底解决洛雪音乐音源失效问题:六音音源修复完全指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐1.6.0版本后无法正常播放音乐而烦恼吗?六音音源修…...
Win10老电脑别急着扔!保姆级教程教你绕过TPM2.0限制,免费升级到Win11 22H2
Win10老电脑焕新指南:无TPM2.0硬件升级Win11 22H2的实战方案 当微软发布Windows 11时,TPM2.0芯片的强制要求让许多老设备用户措手不及。我的2015年款Surface Pro 4最初也被系统更新助手判定为"不兼容设备",但经过三天的技术探索和实…...
MLOps实战:从模型实验到生产部署的全流程自动化与监控
1. 项目概述:为什么我们需要MLOps?在数据科学和机器学习领域摸爬滚打了十几年,我见过太多“实验室里的冠军模型”在生产环境中折戟沉沙。一个在测试集上准确率高达99%的推荐模型,上线后用户点击率不升反降;一个精心调优…...
GE 和 Runtime:不是上下游,是协同决策
你以为 GE 做完融合决策,交给 Runtime 执行就行了?其实它们是一个协同系统——GE 决定"融什么",Runtime 决定"怎么跑",但 GE 的融合决策必须考虑 Runtime 的调度约束,Runtime 的调度策略也必须参考…...
