共计 2727 个字符,预计需要花费 7 分钟才能阅读完成。
- 文档
是 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/manu…
用于存储和检索超过 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({“字段名”})
下面临时都是经常应用到的操作,临时先梳理到这里,其余的咱们下一篇再接着写,对于上述的操作,还是须要本人一一过一便,通过本人的大脑去思考和比照,能力相熟的快,当前真正须要的时候就能很快的用上
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 小魔童哪吒,欢送点赞关注珍藏,下次见~