mongodb 快速入门

前言

不同于传统的关系型数据库如 MySQL,数据存储在表格里,类似于 Excel 电子表格,其中数据按行(记录)和列(字段)组织。

MongoDB 是一种非关系型数据库,使用文档存储(document store),以类似 JSON 格式存储数据。

核心概念

  • 数据库(database):数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
  • 集合(collection):集合类似于 JS 中的数组,在集合中可以存放很多文档
  • 文档(document):文档是数据库中的最小单位,类似于 JS 中的对象,文档可以包含不同的数据类型(如字符串、数字、数组、嵌套文档等)和复杂的嵌套结构。
  • MongoDB 使用 BSON, 一种类似于 JSON 的二进制格式(比 JSON 更多的数据类型,如日期和二进制数据类型),用于存储和传输 MongoDB 中的文档。
  • 索引(Index):索引支持对 MongoDB 集合中的数据进行快速搜索。默认情况下,每个集合都有一个对 _id 字段的自动索引。其他索引需要根据查询的需要手动添加。
  • 复制集(Replica Set):复制集是 MongoDB 中的数据冗余和备份机制,用于提高数据的可用性。复制集中的数据自动同步,确保所有副本都保存最新数据。在主节点故障时,复制集可以自动选举新的主节点,保证数据库的可用性。
  • 分片(Sharding):分片是 MongoDB 中的一种水平扩展方法。它涉及将数据分布在多个服务器上,每个服务器上存储数据集的一部分。分片可以提高大数据集的处理能力和吞吐量。
  • 聚合(Aggregation):聚合是一种强大的数据处理工具,用于执行复杂的数据搜索、过滤、分组和排序等操作。MongoDB 提供了聚合管道,允许用户定义一个数据处理的多阶段管道,每个阶段对数据进行操作并传递给下一阶段。
  • 操作符(Operators):在查询和更新文档时,操作符用于指定操作的类型。例如查询操作符(如 g t 、 gt、 gt、lt 用于比较),更新操作符(如 s e t 用于设置字段值),逻辑操作符(如 set 用于设置字段值),逻辑操作符(如 set用于设置字段值),逻辑操作符(如and、$or)等。

安装与运行

docker 安装

首先,我们需要在 docker desktop 中搜索 mongodb 镜像:

运行容器,指定容器名、映射的端口号,以及挂载到 /data/db 目录:

普通安装

  • 下载地址: Download MongoDB Community Server
  • 建议选择 zip 类型, 通用性更强 配置步骤如下:
    • 将压缩包移动到 C:\Program Files 下,然后解压
    • 创建 C:\data\db 目录,mongodb 会将数据默认保存在这个文件夹
    • 以 mongodb 中 bin 目录作为工作目录,启动命令行
    • 运行命令 mongod

看到最后的 waiting for connections 则表明服务 已经启动成功

然后可以使用 mongo 命令连接本机的 mongodb 服务

注意:

  • 为了方便后续方便使用 mongod 命令,可以将 bin 目录配置到环境变量 Path 中
  • 千万不要选中服务端窗口的内容 ,选中会停止服务,可以敲回车取消选中

命令行操作

使用命令行操作数据库较少,了解为主。

通过 mongosh 命令进入 MongoDB 的交互式界面:

显示所有数据库

bash 复制代码
show dbs;
show databases;

查看下现有的 database。

切换创建数据库

用 use

bash 复制代码
use hello-mongo;

然后 db 命令查看当前 database:

bash 复制代码
db;

但这时候你再用 show dbs 会发现没有这个 db:

因为默认要有了一个 collection 之后才会把 database 写入硬盘。

bash 复制代码
db.createCollection('aaa');

删除数据库

bash 复制代码
db.dropDatabase();

此时 shwo database;

创建集合

javascript 复制代码
db.createCollection('集合名称')

显示当前数据库中的所有集合

javascript 复制代码
show collections

重命名集合

javascript 复制代码
db.集合名.renameCollection('newName')

删除特定集合

javascript 复制代码
db.集合名.drop()

向集合中插入文档

javascript 复制代码
db.集合名.insert({name: "云牧", age: 30})

查询集合中的文档

javascript 复制代码
db.集合名.find()

数据中的 _id 是 mongodb 自动生成的唯一编号,用来唯一标识文档。

  • 查询特定文档:
javascript 复制代码
db.集合名.find({name: "云牧"})

更新集合中的文档

javascript 复制代码
db.集合名.update(查询条件, 新的文档)
db.集合名.update({name: "黛玉"}, {$set: {age: 31}})

删除集合中的文档

javascript 复制代码
db.集合名.remove(查询条件)
db.集合名.remove({name: "黛玉"})

mysql 使用 sql 来 crud 的,而 mongodb 里是用 api。

但完成的功能是一样的,可以在 mongodb 文档看到每个 api 对应的 sql 写法。

mongo compass

MongoDB 提供了官方的 GUI 工具------Mongo Compass,通过图形界面,用户就可以不敲命令来管理数据库了。

下载官方 GUI 工具 Mongo Compass:

连接上 mongodb 的 server:

在 GUI 工具里操作就很方便直观了。

可以看到所有的 database、collection、document。

在这里输入过滤条件后点击 find:

更新和删除也都很直观:

相关推荐
Autumn_ing5 小时前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md
凤山老林5 小时前
Spring Boot 启动冲刺:耗时剖析、懒加载策略与事件驱动初始化优化
spring boot·后端·python
keyipatience6 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室6 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
java1234_小锋8 小时前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
woniu_maggie9 小时前
SAP MDG主数据治理实战:从架构原理到项目实施全解析
后端
xiaoqiMikko9 小时前
Redis 实战(一):内存满了 —— 拒写、淘汰、被系统杀掉,以及删了 key 内存为什么不降(6.2.4 实测)
redis·后端
鶴哥只手遮天9 小时前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 1 章 项目全景:monorepo 架构与工程化体系
前端·vue.js·开源
流星。。方9 小时前
小团队官网SEO落地:前端语义化与静态生成的工程实践
前端·状态模式