乐趣区

关于go: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/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({“字段名”})

下面临时都是经常应用到的操作,临时先梳理到这里,其余的咱们下一篇再接着写,对于上述的操作,还是须要本人一一过一便,通过本人的大脑去思考和比照,能力相熟的快,当前真正须要的时候就能很快的用上

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

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

退出移动版