【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: • 文档是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录

mongodb 基本概念

image.png

  • 文档

是 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

docs.mongodb.com/manual/core…

image.png

用于存储和检索超过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({“字段名”})

上面暂时都是常常使用到的操作,暂时先梳理到这里,其他的咱们下一篇再接着写,关于上述的操作,还是需要自己一一过一便,经过自己的大脑去思考和对比,才能熟悉的快,以后真正需要的时候就能很快的用上

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

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

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关实践学习
快速掌握 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 关系型数据库 MySQL
Linux平台下安装部署MongoDB数据库及基本使用(1)
Linux平台下安装部署MongoDB数据库及基本使用(1)
362 0
|
12月前
|
NoSQL MongoDB 数据库
Mongodb的基本使用
Mongodb的基本使用
156 0
|
2月前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
【5月更文挑战第10天】本文介绍了MongoDB,一个流行的NoSQL数据库,以其灵活的数据模型和高性能著称。内容包括MongoDB的基础知识、安装配置、文档数据模型、数据库操作(如创建、查询、更新和删除)、索引创建、数据备份恢复及性能优化策略。此外,还探讨了MongoDB在社交网络、电子商务等领域的应用。对于初学者,本文提供了从零开始学习MongoDB的入门指导。
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
|
2月前
|
存储 NoSQL MongoDB
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo 建议您使用 PIP 来安装 PyMongo。PIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:
118 1
|
12月前
|
NoSQL MongoDB 数据库
【mongo 系列】mongodb 学习九,MongoDB 主从集群 2
继续咱们 mongodb 集群的学习和分享 上次分享了 mongodb 主从集群的同步机制(oplog),心跳机制,这次我们继续看看选举机
|
7月前
|
存储 NoSQL Linux
小白带你学习linux的MongoDB(三十四)
小白带你学习linux的MongoDB(三十四)
60 1
|
2月前
|
JavaScript NoSQL MongoDB
【Vue学习】 图书管理系统—mongodb的使用(一)
【Vue学习】 图书管理系统—mongodb的使用(一)
|
11月前
|
存储 NoSQL 关系型数据库
【数据库MongoDB的学习】
【数据库MongoDB的学习】
52 0
|
12月前
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习十,MongoDB 分片集群
之前说到了主从集群,关于主从集群的搭建以及细节后面会再次分享,这次我们先初步来看看 分片集群
126 0
|
12月前
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习十三,内存引擎及配置
上次我们分享到了 wiredTiger 引擎以及他对于以前默认的 MMAPV1 引擎的优势 关于 wiredTiger 引擎 配置这里补充一下
273 0