mongodb 基本概念

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 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)]

好了,本次就到这里

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

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

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
9天前
|
NoSQL MongoDB 数据库
|
4月前
|
存储 NoSQL 关系型数据库
|
4月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
1-MongoDB相关概念
|
4月前
|
存储 NoSQL Shell
MongoDB相关概念
MongoDB是一种面向文档的NoSQL数据库,旨在为Web应用提供可扩展的高性能数据存储解决方案。它支持的数据结构非常松散,采用类似于JSON的BSON格式,可以存储复杂的数据类型。MongoDB的查询语言非常强大,几乎可以实现类似关系数据库的大部分功能,并支持对数据建立索引。与传统关系数据库相比,MongoDB由数据库、集合和文档三个层次组成,使用丰富的查询表达式,可以轻松查询文档中的内嵌对象和数组。MongoDB具有高性能、丰富的查询语言和高可用性等特点,适用于各种应用场景。
213 1
|
11月前
|
存储 监控 NoSQL
MongoDB的基本概念和主要特点
MongoDB的基本概念和主要特点
152 0
MongoDB的基本概念和主要特点
|
12月前
|
存储 NoSQL JavaScript
软件开发入门教程网之MongoDB 概念解析
【摘要】 本章将会讲解不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。
|
存储 JSON NoSQL
玩转MongoDB—基本概念及初步使用
玩转MongoDB—基本概念及初步使用
|
存储 JSON NoSQL
MongoDB 的基本概念及原理
MongoDB 的基本概念及原理
MongoDB 的基本概念及原理
|
存储 JSON NoSQL
一幅长文细学MongoDB(一)——MongoDB相关概念
MongDB是NoSQL(非关系数据库的一种),其具有十分广泛的应用场景。在本文中,我们会详细谈论MongoDB的相关概念
152 0
|
存储 JSON NoSQL
玩转MongoDB—基本概念及初步使用
Hello 朋友们:v:,本次我们介绍一种NoSQL数据库,也是当前除了Redis以外比较主流的非关系型数据库—MongoDB,它也被称为文档数据库,并且数据格式类似于JSON,是不是很期待,那我们就马上开始本次的文章讲解!:see_no_evil:
151 0
玩转MongoDB—基本概念及初步使用