NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • MySQL

  • Redis

  • MongoDB

    • 教程

      • 概念与准备
        • 概念
        • 适用场景
        • 结构
        • BSON类型
        • 版本号
          • 当前
          • MongoDB 4.4 及更早版本
        • 安装
          • Docker compose
        • 连接
          • Shell
          • Compass
      • 常见操作
      • Python实践
  • 分享

  • 数据库
  • MongoDB
  • 教程
NipGeihou
2024-10-25
目录

概念与准备

# 概念

  • 一个开源、高性能、无模式的文档型数据库
  • NoSQL 数据库中的一种
  • 最像关系型数据库的非关系型数据库
  • 存储形式像 JSON 数组(BSON)

# 适用场景

  1. 数据量大
  2. 写入操作频繁(读写都很频繁)
  3. 价值较低的数据,对事务性要求不高

  • 应用不需要事务及复杂的 join 事务
  • 新应用,需求会变,数据模型无法确定,想快速迭代开发
  • 应用需要 2000-3000 以上的读写 QPS(更高也可以)
  • 应用需要 TB 甚至 PB 级别数据存储
  • 应用发展迅速,需要能快速水平扩展
  • 应用要求存储的数据不丢失
  • 应用需要 99.999% 高可用
  • 应用需要大量的地理位置查询、文本查询

相对于 MySQL,可以以更低的成本解决问题(学习、开发、运维等成本)

# 结构

SQL MongoDB 说明
database database 数据库
table collection 数据库表 / 集合
row document 数据记录行 / 文档
column field 数据字段 / 域
index index 索引
table joins 表连接,MongoDB 不支持
嵌入文档 MongoDB 通过嵌入式文档来替代多表连接
primary key primary key 主键,MongoDB 自动将 _id 字段设置为主键

# BSON 类型

常用类型

未提供示例的,可认为是和 JavaScript 对象是同写法。

数据类型 描述 示例
字符串
对象 id 文档的唯一 ID(12Byte) {"X" :ObjectId() }
布尔值
数组
32 位整数
64 位整数
64 位浮点数
null
undefined
符号
正则表达式 {"x" : /foobar/i}
代码 JavaScript 代码 {"x" : function() { /* …… */ }}
二进制数据
最大值 / 最小值

# 版本号

参考:MongoDB 版本控制 - MongoDB 手册 (opens new window)

# 当前

MongoDB 版本控制采用  X.Y.Z  形式,其中的  X.Y  是指版本系列, Z  是指补丁号。

Note

5.0 之后, x.0 即为稳定版,如 8.0

# MongoDB 4.4 及更早版本

采用  X.Y.Z  形式;其中  X.Y  指代版本系列或开发系列,而  Z  则指补丁版本号。

  • 如果  Y  为偶数,则  X.Y  指的是版本系列;例如, 4.2  版本系列和  4.4  版本系列。发布系列 稳定 ,适合生产。
  • 如果  Y  是奇数,则  X.Y  表示开发系列;例如, 4.3  开发系列和  4.5  开发系列。开发系列仅用于测试环境,不用于生产环境。

# 安装

# Docker compose

mongo - Official Image | Docker Hub (opens new window)

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
	  - /my/own/datadir:/data/db


  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
      ME_CONFIG_BASICAUTH: false

默认端口为 27017

# 连接

Note

建议直接使用如 DataGrip 等数据库工具操作

# Shell

mongo

# Compass

参考:MongoDB Compass | MongoDB (opens new window)

上次更新: 2024/10/26, 18:34:32
Redis - 常见面试题
常见操作

← Redis - 常见面试题 常见操作→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式