mongodb 基本概念

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: mongodb 基本概念

  • 文档

是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录

  • 集合

一组文档的集合,文档存放的是数据,集合内的结构是可以不同的,集合就类似于关系型数据库的表

数据库,由多个集合组成的。每个数据库都市完全独立的,有自己的用户,权限信息,独立的存储文件夹

  • 实例

在系统运行库的进程及节点集,一个实例可以有多个数据库

关系型数据库和 mongodb 对比

例如 mongodb 和 mysql 进行对比

文件名 MongoDB Mysql
服务名 mongod mysqld
客户端名 mongo mysql

类似于这这种数据库开源组件,服务名字后面都会有一个 d

客户端程序,是用于与服务端程序通信的

关系型数据库 和 mongodb 基本概念对比学习

概念 关系型数据库 Mongdb
数据库 database database
table collection
数据行 row data document
字段 column field
索引 index index
表关联 join embedding 或 linkding
分片 / 分区 partition shard
分区键 partition key sharding key

上述表格中,我们可以清晰的看出,mongodb 中的 文档 对应着关系型数据库的行数据,mongodb 中的 集合 对应着关系型数据库的 表格

mongodb 的数据类型

前面图上有提到,mongodb 中的文档类似于 json 对象,属于 json 中的一种,成为 bson。

文档中字段中的值可以包括其他文档,成为内嵌文档,也可以包括数组和文档数据

关于文档存储的优点有这些:

  • 文档

即为对象,对应于许多编程语言中的本机数据类型

  • 嵌入式文档和数组减少了对连接的需求
  • 动态模式支持流畅的多态性

咱们一起来看看 bson 都有哪些数据类型,bson 是 json 文档的二进制表示形式,bson 包含了比 json 更多的数据类型,如下:

type number 说明
Double 1 双精度浮点值
String 2 字符串,UTF-8才是合法的
Object 3 用于内嵌文档
Array 4 数组
Binary data 5 二进制数据
Udefined 6 “undefined”
Objectid 7 对象 id
Boolean 8 布尔
Date 9 日期时间,unix 标准
Null 10 创建空值
Regular Expression 11 正则表达式
DBPointer 12 “dbPointer”
JavaScript 13 “javascript“
Symbol 14 “symbol”
JavaScript(with scope) 15 “javascript with scope”
32 - bit integer 16 int 类型
Timestamp 17 mongodb 复制和 sharing 使用的特殊内部类型,前 4 个字节是增量,挨着的 4 字节是时间戳
64-bit integer 18 long 类型
Decimal128 19 decimal
Min key -1 比正常 bson 类型元素值都低的类型 与 255 是同样的效果
Max key 127 比正常 bson 类型元素值都高的类型

需要注意的一点:

一个 bson 文档最大的大小是 16M,并且文档嵌套级别不能超过 100 层

看到这里是不是和上述说到的 mongodb 能够存储大量数据 TB 或者 PB 级别的有点矛盾了,没关系,我们来看看这个数据类型

GridFS

https://docs.mongodb.com/manual/core/gridfs/

用于存储和检索超过BSON-document大小限制 (16mb) 就会使用到 GridFS 数据类型

mongodb 的简单安装

mongodb 的安装方式就不在这里赘述了,可以查看我的历史文章 一文便知 GO 中mongodb 的安装与使用

mongodb 的基本命令使用

总结 mongodb 常用命令

命令 作用
use 数据库名字 若数据库不存在则创建,若存在则使用
show dbs 显示数据库
db.dropDatabase() 删除当前数据库
db.集合名字.drop() 删除集合
db.createCollection(“集合名字”) 创建集合
db.集合名字.insert({}) 若集合不存在,默认创建并插入数据
若集合存在,则插入数据
show collections / show tables 显示当前数据的集合
db.集合名字.insertOne({}) 插入一条数据
db.集合名字.insertMany({[]}) 插入多条数据
db.集合名字.find() 查找当前表格所有数据
db.集合名字.update({条件},{要做的更新操作}) 更新文档数据
db.collection.save({带有 Objectid 的数据}) 替换已有文档,若 Objectid 主键存在就更新,不存在就插入
db.collection.remove({}) 删除文档
db.集合名字.find().pretty() 以更友好的方式输出

关于新建文档注意事项

  • 新建文档,会自动创建不存在的集合,数据库
  • 如果不指定主键,则会自动生成主键 _id 和他对应的值
  • 写操作都是基本单个文档级别的原子操作

关于 mongo db 查询操作,我们可以有如下运算符可以使用

运算符 说明
$eq 等于
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$in 判断元素是否在指定的集合范围里
$all 判断数组中是否包含某几个元素,无关顺序
$nin 判断元素是否不在指定的集合范围里
$ne 不等于
$not 不匹配结果
$or 有一个条件成立则匹配
$nor 所以条件都不匹配
$and 所有条件都必须匹配
$exists 判断元素是否存在
. 子文档匹配
$regex 正则表达式匹配

关于 mongodb 查询的其他操作:

  • 选择需要的字段

db.集合名字.find({},{字段名:1})

  • 排除不需要的字段

db.集合名字.find({},{字段名:0})

  • 数组子元素的选择

db.集合名字.find({},{“字段名.子文档名的字段”:{$slice:[1,2]})

$slice ,可以取两个元素数组,分别表示跳过数和限制数

  • 排序

sort()

db.集合名.find().sort({“字段名”:1})

1 是升序

2 是降序

  • 跳过和限制

skip(n) , 跳过 n 条数据

limit(n) ,限制 n 条数据

db.集合名.find().skip(3).limit(2)

  • 查询唯一的值

db.集合名.find().distinct({“字段名”})

上面暂时都是常常使用到的操作,暂时先梳理到这里,其他的咱们下一篇再接着写,关于上述的操作,还是需要自己一一过一便,经过自己的大脑去思考和对比,才能熟悉的快,以后真正需要的时候就能很快的用上

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o8JWYBGx-1662560468508)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dbd0fa27d61a491f9860dc938de52008~tplv-k3u1fbpfcp-zoom-1.image)]

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

相关文章
|
2月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
MongoDB 是一种高性能、无模式的文档型数据库,适合需要灵活数据模型、高扩展性和大规模数据存储的应用场景。适用于新项目快速开发、高并发读写、海量数据存储及地理文本查询等需求,且支持类似 JSON 的 BSON 数据格式,灵活易扩展。
46 0
|
2月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
传统关系型数据库(如MySQL)难以应对高并发读写、海量数据存储及高扩展性需求。MongoDB适用于社交、游戏、物流等场景,支持大数据量、高频读写及低事务要求的数据存储与高效访问。
44 0
|
6月前
|
存储 NoSQL 关系型数据库
MongoDB相关概念
本文介绍了MongoDB在业务场景中的应用及其特点。
MongoDB相关概念
|
6月前
|
存储 JSON NoSQL
MongoDB相关概念
MongoDB是一款开源、高性能的文档型数据库,适用于高并发读写、海量数据存储及高可扩展性需求的场景。它以BSON格式存储数据,支持灵活的无模式数据结构,适合社交、游戏、物流、物联网和视频直播等应用。相比传统关系型数据库(如MySQL),MongoDB在处理大规模、低事务性要求的数据时更具优势。其特点包括高性能(嵌入式数据模型减少I/O)、高可用性(副本集自动故障转移)和高扩展性(分片技术实现水平扩展)。此外,MongoDB还提供丰富的查询功能,如文本搜索、地理位置索引等,满足多样化需求。
MongoDB相关概念
|
12月前
|
存储 NoSQL Shell
02 MongoDB数据类型、重要概念以及shell常用指令
文章详细解释了MongoDB中的数据类型、重要概念,并提供了常用的MongoDB Shell操作指令,帮助用户更好地管理和操作MongoDB数据库。
146 0
02 MongoDB数据类型、重要概念以及shell常用指令
|
11月前
|
存储 NoSQL MongoDB
MongoDB 概念解析
10月更文挑战第12天
223 0
MongoDB 概念解析
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
1-MongoDB相关概念
|
NoSQL MongoDB 数据库
|
存储 NoSQL 关系型数据库
MongoDB简介以及核心概念
MongoDB简介以及核心概念
159 1
|
存储 NoSQL 关系型数据库
【MongoDB系列笔记】MongoDB相关概念
MongoDB 是一个开源、高性能、无模式的文档型数据库,常用于处理高并发、海量数据的场景,尤其适合社交、游戏、物流、物联网和视频直播等领域。与传统的关系型数据库相比,MongoDB 更适合存储结构较为灵活、数据量大且事务性要求不高的数据。当面临高读写需求、大规模数据存储和高可扩展性需求时,可以选择 MongoDB。MongoDB 支持类似于 JSON 的 BSON 数据格式,具有丰富的数据模型,如文档、集合和数据库,以及强大的查询和索引功能。此外,MongoDB 提供复制集以实现高可用性和水平扩展性,以适应业务发展和数据增长。
268 0