玩转MongoDB—基本概念及初步使用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: Hello 朋友们:v:,本次我们介绍一种NoSQL数据库,也是当前除了Redis以外比较主流的非关系型数据库—MongoDB,它也被称为文档数据库,并且数据格式类似于JSON,是不是很期待,那我们就马上开始本次的文章讲解!:see_no_evil:

1 基本介绍

官网: https://www.mongodb.com/

Doc.:https://www.mongodb.com/docs/

GitHub:https://github.com/mongodb/mongo

1.1 MongoDB是什么

MongoDB是一个非关系型文档数据库,旨在简化开发和扩展。

什么是文档数据库?

首先,文档数据库并不是存放文档文件的数据库,在应用程序层中,数据经常表示为 JSON 文档,并将其数据模型视为文档,因此存放该数据模型的数据库就被称为文档数据库。

文档数据库也是非关系型数据库(NoSQL)的一种,一个文档相当于关系数据库中的一条记录。

1.2 重要概念

MongoDB中的一条记录是一个文档,它是由字段和值对组成的数据结构。 MongoDB文档类似于JSON对象。 字段的值可以包括其他文档、数组和文档数组。

MongoDB中有三层概念:Database、Collection、Document,他们的关系是Database>Collection>Document

  • Database:数据库,也类似于关系型数据库中的数据库
  • Collection:集合,类似于关系型数据库中的表
  • Document:文档,类似于关系型数据库中的一条数据

1.3 关键特性

  • 高性能
  • 查询API
  • 高可用性
  • 水平伸缩性
  • 支持多种存储引擎

1.4 BSON数据类型

BSON是MongoDB中用于存储文档和进行远程过程调用的二进制序列化格式。

JSON和BSON的区别

与JSON相比,BSON着眼于提高存储和扫描效率。BSON文档中的大型元素以长度字段为前缀以便于扫描。BSON使用的空间会多于JSON。另外,除了支持 JSON 中的数据类型外,BSON 还支持日期(Date)和二进制(BinData)等类型。

JSON BSON
JSON 是 javascript 对象表示法 BSON 是二进制 JSON
是一种轻量级的、基于文本的、开放的数据交换格式 是一种二进制序列化文档格式
JSON 包含一些基本数据类型,如字符串、数字、布尔值、空值 除了支持 JSON 中的类型外,BSON 还包含一些额外的数据类型,例如日期(Date)、二进制(BinData)等
AnyDB、redis 等数据库将数据存储为 JSON 格式 MongoDB 中将数据存储为 BSON 格式
主要用于传输数据 主要用于存储数据
没有响应的编码和解码技术 有专用的编码和解码技术
如果想从 JSON 文件中读取指定信息,需要遍历整个数据 在 BSON 中,可以使用索引跳过到指定内容
JSON 格式不需要解析,因为它是人类可读的 BSON 需要解析,因为它是二进制的
JSON 是对象和数组的组合,其中对象是键值对的集合,而数组是元素的有序列表 BSON 是二进制数据,在其中可以存储一些附加信息,例如字符串长度、对象类型等

2 安装使用

各版本下载地址: https://www.mongodb.com/docs/manual/installation/

2.1 Windows下安装

双击安装包:
在这里插入图片描述
默认,直接下一步:
在这里插入图片描述
直接下一步:
在这里插入图片描述

2.2 工具安装

下载地址: https://www.mongodb.com/try/download/tools

操作MongoDB最常用的工具有两个,如图,一个是命令行操作,一个是类似于Web页面的操作。
在这里插入图片描述

2.2.1 MongoDB Shell

MongoDB Shell是连接和使用MongoDB最快的方法。通过这个现代的、可扩展的命令行界面,可以轻松地查询数据、配置设置和执行其他操作,具体的功能有语法高亮显示、智能自动完成、上下文帮助和错误消息。
在这里插入图片描述

2.2.2 MongoDB Compass

MongoDB Compass是 MongoDB的GUI,也就是可视化界面,直观而灵活,提供了详细的模式可视化、实时性能指标、复杂的查询功能等等。

MongoDB Compass有三个版本:一个拥有所有特性的完整版本,一个没有写或删除功能的只读版本,以及一个单独的版本,它的唯一网络连接到MongoDB实例。
在这里插入图片描述

3 初步使用

3.1 使用MongoDB Shell进行CRUD

https://www.mongodb.com/docs/mongodb-shell/crud/
3.1.1 连接到MongoDB

运行mongosh,不带任何命令行选项,连接到运行在你的localhost上的MongoDB实例,默认端口27017:

mongosh

带参数的连接命令:

# 使用URL连接
mongosh "mongodb://localhost:27017"

# 指定端口号连接
mongosh --port 28015

# 自定义URL连接
mongosh "mongodb://mongodb0.example.com:28015"

# 自定义host和port连接
mongosh --host mongodb0.example.com --port 28015

# 使用用户名和密码连接
mongosh "mongodb://mongodb0.example.com:28015" --username alice --authenticationDatabase admin

实例:
在这里插入图片描述

3.1.2 增
  • insertOne() 返回一个包含新插入文档的' _id '字段值的文档。
  • insertMany()返回一个包含新插入文档' ' _id '字段值的文档。

插入一个:

# 选择数据库
use test
# 插入数据
db.movies.insertOne(
  {
    title: "The Favourite",
    genres: [ "Drama", "History" ],
    runtime: 121,
    rated: "R",
    year: 2018,
    directors: [ "Yorgos Lanthimos" ],
    cast: [ "Olivia Colman", "Emma Stone", "Rachel Weisz" ],
    type: "movie"
  }
)

查询:

db.movies.find( { title: "The Favourite" } )

同时插入多个:

use test

db.movies.insertMany([
   {
      title: "Jurassic World: Fallen Kingdom",
      genres: [ "Action", "Sci-Fi" ],
      runtime: 130,
      rated: "PG-13",
      year: 2018,
      directors: [ "J. A. Bayona" ],
      cast: [ "Chris Pratt", "Bryce Dallas Howard", "Rafe Spall" ],
      type: "movie"
    },
    {
      title: "Tag",
      genres: [ "Comedy", "Action" ],
      runtime: 105,
      rated: "R",
      year: 2018,
      directors: [ "Jeff Tomsic" ],
      cast: [ "Annabelle Wallis", "Jeremy Renner", "Jon Hamm" ],
      type: "movie"
    }
])
3.1.3 删
  • deleteMany():该方法返回一个包含操作状态的文档
  • deleteOne():删除一个文档,该方法返回一个包含操作状态的文档

删除全部:

db.movies.deleteMany({})

根据条件删除多个:

db.movies.deleteMany( { title: "Titanic" } )

根据条件删除一个:

use sample_mflix

db.movies.deleteOne( { cast: "Brad Pitt" } )
3.1.4 改
  • updateOne():修改一个
  • updateMany():同时修改多个
  • replaceOne():替换一个

根据添加修改:

use test

db.movies.updateOne( { title: "Tag" },
{
  $set: {
    plot: "One month every year, five highly competitive friends
           hit the ground running for a no-holds-barred game of tag"
  }
  { $currentDate: { lastUpdated: true } }
})

修改多个:

db.movies.updateMany(
  { security_deposit: { $lt: 100 } }, # 修改security_deposit小于100的
  {
    $set: { security_deposit: 100, minimum_nights: 1 }
  }
)

替换一个:

db.movies.replaceOne(
  { account_id: 371138 }, # 替换account_id为371138的
  { account_id: 893421, limit: 5000, products: [ "Investment", "Brokerage" ] }
)
3.1.5 查
  • find():查找全部或根据条件返回

查找全部:

use test

db.movies.find()

根据条件查找:

db.movies.find( { "title": "Titanic" } )

3.2 MongoDB Compass简单使用

3.2.1 连接MongoDB Server

在这里插入图片描述

3.2.2 查看数据库

在这里插入图片描述

3.2.3 查看数据

在这里插入图片描述

3.2.3 添加和修改数据

选择添加一个文档:
在这里插入图片描述
会自动生成ID,我们不需要改,只填写主体内容即可:
在这里插入图片描述
点击这个按钮可以修改:
在这里插入图片描述

4 小总结

今天的分享到这里就结束了,如果有讲的不清楚的地方请在下发留言哈,在下一节我们将会使用MongoDB官方的Drivers来进行不同的编程语言对MongoDB的操作,敬请期待~ :bamboo:

参考文章:

http://c.biancheng.net/json/json-bson.html

https://www.mongodb.com/docs/mongodb-shell/crud/

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 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
相关文章
|
存储 NoSQL 关系型数据库
mongodb 基本概念
mongodb 基本概念
100 0
|
1月前
|
存储 NoSQL MongoDB
MongoDB 概念解析
10月更文挑战第12天
22 0
MongoDB 概念解析
|
2月前
|
存储 NoSQL Shell
02 MongoDB数据类型、重要概念以及shell常用指令
文章详细解释了MongoDB中的数据类型、重要概念,并提供了常用的MongoDB Shell操作指令,帮助用户更好地管理和操作MongoDB数据库。
57 0
02 MongoDB数据类型、重要概念以及shell常用指令
|
3月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
1-MongoDB相关概念
|
6月前
|
NoSQL MongoDB 数据库
|
6月前
|
存储 NoSQL 关系型数据库
MongoDB简介以及核心概念
MongoDB简介以及核心概念
59 1
|
6月前
|
存储 NoSQL 关系型数据库
【MongoDB系列笔记】MongoDB相关概念
MongoDB 是一个开源、高性能、无模式的文档型数据库,常用于处理高并发、海量数据的场景,尤其适合社交、游戏、物流、物联网和视频直播等领域。与传统的关系型数据库相比,MongoDB 更适合存储结构较为灵活、数据量大且事务性要求不高的数据。当面临高读写需求、大规模数据存储和高可扩展性需求时,可以选择 MongoDB。MongoDB 支持类似于 JSON 的 BSON 数据格式,具有丰富的数据模型,如文档、集合和数据库,以及强大的查询和索引功能。此外,MongoDB 提供复制集以实现高可用性和水平扩展性,以适应业务发展和数据增长。
168 0
|
6月前
|
存储 NoSQL 关系型数据库
|
6月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
1-MongoDB相关概念
|
6月前
|
存储 NoSQL Shell
MongoDB相关概念
MongoDB是一种面向文档的NoSQL数据库,旨在为Web应用提供可扩展的高性能数据存储解决方案。它支持的数据结构非常松散,采用类似于JSON的BSON格式,可以存储复杂的数据类型。MongoDB的查询语言非常强大,几乎可以实现类似关系数据库的大部分功能,并支持对数据建立索引。与传统关系数据库相比,MongoDB由数据库、集合和文档三个层次组成,使用丰富的查询表达式,可以轻松查询文档中的内嵌对象和数组。MongoDB具有高性能、丰富的查询语言和高可用性等特点,适用于各种应用场景。
239 1