【数据库】MongoDB 简介:一种文档数据库

MongoDB 简介:一种文档数据库

  • 1.MongoDB 介绍
  • 2.MongoDB 数据存储方式
  • 3.MongoDB 概念与操作
    • 3.1 Create Operations
    • 3.2 Read Operations
    • 3.3 Update Operations
    • 3.4 Delete Operations
  • 4.MongoDB 特点
  • 5.MongoDB 应用场景

1.MongoDB 介绍

MongoDB 是一个基于分布式文件存储的开源 NoSQL 数据库系统,是由 C++ 编写的。MongoDB 是一个文档数据库,旨在简化开发和扩展。在许多场景下,MongoDB 可以用于代替关系型数据库或者键 / 值存储方式,为 Web 应用提供可扩展的高可用高性能数据存储解决方案。

2.MongoDB 数据存储方式

MongoDB 中的记录是一个文档,它是由字段和值对组成的数据结构,MongoDB 文档类似于 JSON 对象,字段的值可以包括其他文档,数组和文档数组。
在这里插入图片描述
使用文档的优点是:

  • 文档(即对象)对应于许多编程语言中的内置数据类型;
  • 嵌入式文档和数组减少了对昂贵连接的需求;
  • 动态模式支持流畅的多态性。

MongoDB 数据库将数据存储在集合 collections 中,而不是表 table。集合包含一个或者多个 BSON 文档。一个 BOSN 文档代表一条记录,而若干纪录组成一个集合 Collection。数据库中的集合就像这样:

在这里插入图片描述
BSON 是一种二进制形式的存储格式,简称 Binary JSON,和 JSON 一样,支持内嵌的文档对象和数组对象。但是 BSON 有 JSON 没有的一些数据类型,比如说 Date 和 BinData 类型。

BSON 采用了类似于 C 语言结构体的名称,具有轻量级、可遍历性、高效性三大特点,可以有效描述非结构化数据和结构化数据,灵活性高,但是空间利用率不是很理想。

BSON 中除了基本的 StringintegerBooleandoublenullarrayobject,MongoDB 还支持一些特殊的数据类型:dateobject idRegular ExpressionJavaScriptTimestamp

3.MongoDB 概念与操作

对应于关系数据库表,其中的一些概念和术语如下:

在这里插入图片描述
表级操作相关的各种 SQL 语句以及相应的 MongoDB 语句如下:

在这里插入图片描述
MongoDB 中的 CRUD 操作如下:

3.1 Create Operations

在集合中增加一个新的文档,集合不存在的话,则新建一个。有如下操作:

  • db.collection.insertOne()
  • db.collection.insertMany()

在 MongoDB 中,insert 操作的对象都是单个集合,而所有的写操作都是在单个文档级别的原子操作。

在这里插入图片描述

3.2 Read Operations

查询集合中的文档,也就是查询文档集合。 有如下操作:

  • db.collection.find()

查询操作可以指定返回文档的查询筛选条件。

在这里插入图片描述

3.3 Update Operations

修改现有集合中的文档。有如下操作:

  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.replaceOne()

更新操作是针对单个集合,所有写操作都是单个文档级别的原子操作。更新可以指定筛选条件,和查询条件具有相同语法。

在这里插入图片描述

3.4 Delete Operations

从集合中删除文档。有如下操作:

  • db.collection.deleteOne()
  • db.collection.deleteMany()

删除操作是针对单个集合。和改查一样,同样可以指定删除条件,语法和两者相同。

在这里插入图片描述

4.MongoDB 特点

MongoDB 是一种开源文档型数据库管理系统,开发者可以使用它来存储和处理大量的非结构化数据,对比关系型数据库,MongoDB 具有更高的可伸缩性、更好的性能和更灵活的数据类型。

在这里插入图片描述

  • 高可伸缩性:MongoDB 采用了分片技术,可以将数据分散在多台服务器上,从而实现水平扩展。这种方式无需增强单个服务器的性能,就可以满足不断增长的数据存储需求。

  • 高性能:查询速度快,部分原因是它将数据存储在内存中,还因为采用了多线程和异步 IO 技术,对大量并发请求也能有出色的响应能力。

  • 灵活的数据类型:采用文档型数据模型,通过嵌套文档和数组,可以灵活的表示数据。

  • JSON 编码:使用 BSON 格式类存储数据,BSON 上文已经提到,是 JSON 的二进制编码,具有更高的查询速度以及更少的存储空间。MongoDB 支持直接读写 JSON 格式的数据,提供了 JSON 风格的查询语言。

  • 可扩展性:存储引擎是可插拔式的,可以根据存储需求选择合适的存储引擎。

  • 自动分片:大型应用所需数据量庞大,MongoDB 可以自动分片,自动分配数据至不同服务器。

  • 数据备份与恢复:快照和复制技术实现数据备份和恢复。

5.MongoDB 应用场景

作为 NoSQL 数据库,MongoDB 可以解决关系型数据库无法解决的 High Performance、Huge Storage、High Scalability && High Availability 问题,分别是对数据库高并发读写的需求、对海量数据的高效率存储和访问的需求、对数据库的高可扩展性和高可用性的需求。

正因为如此,MongoDB 才可以在如下场景中得以应用:

  • 🚀 使用 MongoDB 存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新;
  • 🚀 存储订单信息、订单状态、物流信息;
  • 🚀 存储用户信息,朋友圈信息,通过地理位置定位;
  • 🚀 物联网中存储设备信息、设备汇报的日志信息并进行多维度分析;
  • 🚀 存储用户信息、点赞互动信息;
  • 🚀 ……

适用于 MongoDB 的场景总结:数据量大、读写操作频繁、数据价值不高,对事务要求不高

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/222064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux4.5、进程状态

个人主页:Lei宝啊 愿所有美好如期而遇 目录 进程状态介绍 Linux下具体进程状态 R状态 和 S状态 D状态 T状态 t状态 Z状态 X状态 进程状态介绍 首先,进程状态有运行,阻塞,挂起,这些只是一个大体的概括&am…

动态规划背包问题总结

背包问题分类繁多,对刚学习动态规划的新手的来说难度不小,接下来就来仔细理一理背包问题 首先我们先不管背包问题有几种分类,反正讲了也不会有什么深刻的认识,只有你真正做题遇到了,你来能感受到他大概是怎么样的 回到最初的起点,我们需要搞明白的是: 什么是背包问题? 我们…

Skywalking接入实际应用做日志跟踪

Skywalking客户端挂载 从官网下载skywalking-agent客户端,并挂在到应用服务器指定目录 挂载到应用主机中,好处是解决打包应用镜像的时候,镜像过大,部署成本过高。 docker-compose部署应用,并接入skywalking服务,这里以gateway为例 versio…

使用opencv实现图片相似度检测

1.为什么学这个,我对图像处理非常感兴趣,我联想到海尔的指纹识别门锁是如何进行检测的,我在想不应该呀,单片机性能这么差,应该是使用了训练后的数据去检测图片的,如果我要实现草莓检测,知道它是不是草莓,我觉得单纯使用图片处理是不够的,我考虑过使用指纹模块来接触草莓从而实现…

【受体 + 二系统 】

GPCR A级超家族家庭成员/基因评论胺受体受体的六个亚家族总共包括45个基因(其中4个是假基因);这六个亚家族是5-羟色胺(5-HT,血清素)受体(13个基因),多巴胺受体(5个基…

抖音开新店,十个设置,实操满满全是干货

抖店开店的第一天手足无措不知从哪入手?我给大家分享一个新手开店必须完成的十个设置,实操满满全是干货,每一项都很重要!特别是新手一定要认真看,因为这个直接关系到你店铺能否正常经营,跟着我一起来实操一…

【活动回顾】sCrypt在柏林B2029开发者周

B2029 是柏林的一个区块链爱好者、艺术家和建设者聚会,学习、讨论和共同构建比特币区块链地方。 在2023年6月9日至11日,举行了第7次Hello Metanet研讨会。本次研讨会旨在为参与者提供一个学习、讨论和共同构建比特币区块链的平台。 在这个充满激情和创意…

机器人制作开源方案 | 网球自动拾取机

作者:柳文浩、李浩杰、苏伟男、贾思萌、张天芸 单位:西安外事学院 指导老师:胡宝权、陈小虎 1. 产品说明 1.1 设计目的 近年来,网球运动越来越受到老百姓的欢迎,各种规模的比赛层出不穷。然而由于网球运动极为激烈…

OpenCvSharp从入门到实践-(03)像素

目录 像素 1、确定像素位置 2、获取像素的BGR值 3、修改像素的BGR值 像素 图像数字化是指用数字表示图像,每一幅数字图像都是有M行N列的像素组成的,其中每一个像素都存储一个像素值。计算机通常会把像素值处理为256个灰度级别,这256个灰…

VMWare虚拟机ubuntu克隆打不开

ubuntu克隆打不开 复制的存有ubuntu克隆的文件夹,导入vmware打不开 说找不到这个文件,那就到目录把它的删掉 的删掉 换000001.vmdk后缀的

Centos7上面部署redis

Centos7上面部署redis 编写这个部署redis,只是为了另一个文章入侵redis做准备,网上还有好多类似的文章,这个单纯的就是部署安装,并简单的测试使用以下 关联其他文章 [1]VMware上面安装部署centos7镜像系统【详细含镜像】 [2]血的教…

汽车转向桥设计转向节转向桥机械设计

wx供重浩:创享日记 对话框发送:转向桥 获取完整报告说明书工程源文件 转向节图 装配图 本文设计的是JY1061A型采用前置后轮驱动的载货汽车转向桥,因此该转向桥为从动桥。从动桥的功用:从动桥也称非驱动桥,又称从动车轴…