关于go:mongodb-基本概念

45次阅读

共计 2727 个字符,预计需要花费 7 分钟才能阅读完成。

  • 文档

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

  • 汇合

一组文档的汇合,文档寄存的是数据,汇合内的构造是能够不同的,汇合就相似于关系型数据库的表

数据库,由多个汇合组成的。每个数据库都市齐全独立的,有本人的用户,权限信息,独立的存储文件夹

  • 实例

在零碎运行库的过程及节点集,一个实例能够有多个数据库

关系型数据库和 mongodb 比照

例如 mongodb 和 mysql 进行比照

文件名MongoDBMysql
服务名mongodmysqld
客户端名mongomysql

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

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

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

概念关系型数据库Mongdb
数据库databasedatabase
tablecollection
数据行row datadocument
字段columnfield
索引indexindex
表关联joinembedding 或 linkding
分片 / 分区partitionshard
分区键partition keysharding key

上述表格中,咱们能够清晰的看出,mongodb 中的 文档 对应着关系型数据库的 行数据 ,mongodb 中的 汇合 对应着关系型数据库的 表格

mongodb 的数据类型

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

文档中字段中的值能够包含其余文档,成为内嵌文档,也能够包含数组和文档数据

对于文档存储的长处有这些:

  • 文档

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

  • 嵌入式文档和数组缩小了对连贯的需要
  • 动静模式反对晦涩的多态性

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

typenumber阐明
Double1双精度浮点值
String2字符串,UTF- 8 才是非法的
Object3用于内嵌文档
Array4数组
Binary data5二进制数据
Udefined6“undefined”
Objectid7对象 id
Boolean8布尔
Date9日期工夫,unix 规范
Null10创立空值
Regular Expression11正则表达式
DBPointer12“dbPointer”
JavaScript13“javascript“
Symbol14“symbol”
JavaScript(with scope)15“javascript with scope”
32 – bit integer16int 类型
Timestamp17mongodb 复制和 sharing 应用的非凡外部类型,前 4 个字节是增量,挨着的 4 字节是工夫戳
64-bit integer18long 类型
Decimal12819decimal
Min key-1比失常 bson 类型元素值都低的类型 与 255 是同样的成果
Max key127比失常 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({“字段名”})

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

欢送点赞,关注,珍藏

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

好了,本次就到这里

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

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

正文完
 0