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

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

欢送点赞,关注,珍藏

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

好了,本次就到这里

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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理