非关型数据库之MongoDB

目录

1 MongoDB简介

1.1 初识MongoDB

1.2 MongoDB与传统的关系型数据库的区别

1.3 MongoDB存储结构

1.4 BSON支持的数据类型

2  MongoDB Shell操作

3 MongoDB集群操作


1 MongoDB简介

1.1 初识MongoDB

        MongoDB来源自英文单词"Humongous”,译为“庞大的”从中可见MongoDB的存储容量不可谓小,MongoDB是一个开源的文档数据库,使用C++语言编写。其中主要的功能特性为:面向集合存储,易于存储数据类型的数据,模式自由,支持动态查询,支持完全索引,支持复制和故障恢复,使用高效的二进制数据存储,文件存储格式为BSON(JSON的一种二进制形式的存储格式)。

1.2 MongoDB与传统的关系型数据库的区别

存储结构对应关系
存储结构关型数据库MongoDB
数据库databasedatabase
数据表/集合tablecollection
行/文档rowdocument
列/字段(属性)columnfield
主键primary keyprimary key
表连接table join不支持连接
嵌套关系不支持嵌套字段(属性)可以嵌套其他文档

结构上区别
关型数据库MongoDB
存储结构(从大到小)数据库、表、行数据库、集合、文档、键值对
结构类型表结构需要预定义文档的结构是可变的
事务特性ACIDBASE

ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

BASE:基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventually Consistent)

1.3 MongoDB存储结构

💥键值对

        MongoDB存储结构的基本结构单位是键值对,键的格式一般是字符串,值的格式可以是字符串、数值、文档等,当值的格式是文档时就是我们所说的嵌套键值对,其他都是基本键值对。键(Key)起到唯一索引的作用,区分大小写;值(Value)是键所对应的数据,通过键来获取其内容。

💥文档

        文档是由多个键值对的有序集合,使用{ }符号进行包裹键值对的顺序确定一个文档,也就是说就算两个文档的键值对内容完全一样,但是键值对顺序不一样,依然是两个文档。一个文档中的键重复时,后面的值覆盖前面的文档必须有一个“_id”的键来唯一标识该文档,自己创建或者默认生成。MongoDB中文档之间的关系包括嵌入和引用两种:

引用就是在一个文档里引用另一个文档里的值:

{
id: "joe",
name: "joe Bookreader"
}{
patron_id: "joe",
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "123456"
}

嵌入就是常说的嵌套键值对:

{
id: "joe",
name: "joe Bookreader"
address: {patron_id: "joe",street: "123 Fake Street",city: "Faketon",state: "MA",zip: "123456"}
}

💥集合

        集合是由多个文档构成的对象,许多文档储存在一个集合中。

💥数据库

        数据库是由许多的集合组成

1.4 BSON支持的数据类型

类型描述
NULL空值或不存在的字段 {"x":null}
Booleantrue和false {"x":true}
StringBSON编码是utf-8 {"x":"文档数据库"}
Number数值(默认64位浮点数) {"x":3.14}
Array数组 {"x":["a","b","c"]}
Object内嵌文档 {"x":{"y":4.23}}
ObjectId文档的唯一标识 {"x":ObjectId()}
Binary Data二进制数据
JavaScript代码
Date日期 {"x":new Date()}
Timstamp时间戳 
Regular Expression正则表达式

2  MongoDB Shell操作

参考博客:

​​​​​c​​​​​​MongoDB Shell操作_扎哇太枣糕的博客-CSDN博客

3 MongoDB集群操作

参考博客:

MongoDB副本集、分片集的伪分布式部署(保姆级教程)_扎哇太枣糕的博客-CSDN博客

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

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

相关文章

【手把手 脑把脑】教会你使用idea基于MapReduce的统计数据分析(从问题分析到代码编写)

目录 1 编程前总分析 1.1 数据源 1.2 需要掌握的知识 1.2.1 Hadoop对比java的数据类型 1.2.2 MapReduce流程简介 1.3.3 MapReduce流程细分 2 编码阶段 2.1 导入依赖 2.2 mapper 2.3 reducer 2.4 main 1 编程前总分析 1.1 数据源 英语,李沐,85,男,20 数学,李沐,54,男…

【细节拉满】Hadoop课程设计项目,使用idea编写基于MapReduce的学生成绩分析系统(附带源码、项目文件下载地址)

目录 1 数据源(学生成绩.csv) 2 hadoop平台上传数据源 3 idea代码 3.1 工程框架 3.2 导入依赖 3.3 系统主入口(menu) 3.4 六个mapreduce 3.4.1 计算每门成绩的最高分、最低分、平均分(Mma) 3.4.2 计算每个学生的总分及平均成绩并进行排序(Sas) 3.4.3 统计所有学生的信…

【单位换算】存储单位(bit Byte KB MB GB TB PB EB ZB YB BB)时间单位(ms μs ns ps)长度单位(dm cm mm μm nm pm fm am zm ym)

存储单位 相邻单位相差2⁰,记忆时可以此类推 一字节等于八比特 1 Byte 8 bit 1KB 1024 B 2⁰ B 1MB 1024 KB 2⁰ B 1GB 1024 MB 2⁰ B 1TB 1024 GB 2⁴⁰ B 1PB 1024 TB 2⁵⁰ B 1EB 1024 PB 2⁶⁰ B 1ZB 1024 EB 2⁷⁰ B 1YB 1024 ZB 2⁸⁰ B 1B…

Git 的安装、使用、分支、命令 一篇博客全都学会

目录 1 版本控制 1.1 什么是版本控制 1.2 为什么需要版本控制 2 Git概述 2.1 Git的工作机制 2.2 分布式版本控制工具与集中式的区别 2.3 Git是如何诞生的 3 Git的安装 4 Git常用命令 4.1 用户签名的设置和修改 4.2 查看用户签名的设置 4.3 初始化本地库 4.4 添加、…

生成一个GitHub的token用于git推送本地库至远程库

1 一步步选择设置 2 使用链接直接跳转到最后一步的设置页 git push 的时候需要token,所以在GitHub上生成一个临时的token 1 一步步选择设置 2 使用链接直接跳转到最后一步的设置页 前提是你已经在这个浏览器上登陆了GitHub https://github.com/settings/tokens

都2021年了,还不会使用GitHub创建、推送、拉取、克隆远程库、团队协作开发?

1 对自己的远程库操作 1.1 在GitHub上创建远程库 1.2 推送本地库至远程库 1.3 拉取远程库到本地库 1.4 克隆远程仓库到本地 2 对别人的远程库两种操作方式 2.1 使用GitHub进行团队内协作开发 2.2 使用GitHub进行跨团队协作开发 众所周知,GitHub是一个大型的国…

2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】

1 创建远程库 2 IDEA集成Gitee 2.1 安装gitee插件并绑定账号 2.2 IDEA推送本地库至远程库的两种方式 2.3 修改后推送本地库至远程库 2.4 拉取远程库 2.5 使用IDEA克隆远程库 3 Gitee迁移GitHub的远程库的两种方式 3.1 自己的账户之间迁移 3.2 使用链接进行迁移 3.3 强制刷…

只需五步学会Maven 3.6.1OR 3.6.3及其他版本的下载安装与配置【图文详解】

第一步,下载并解压缩包 ​第二步,配置两个环境变量 ​第三步,测试是否安装成功 ​第四步,指定本地仓库的路径 第五步,修改镜像仓库 第一步,下载并解压缩包 Maven官方下载地址:https://mav…

只需四步完成java JDK1.8的下载安装与配置【图文详解】

第一步,下载安装包并安装 第二步,安装JDK 第三步,配置三个环境变量 第四步,测试是否安装成功 第一步,下载安装包并安装 Oracle的官方下载地址:https://www.oracle.com/java/technologies/downloads/#ja…

从Maven中央仓库网站下载jar包的两种方式,将会伴随java后端开发者的整个职业生涯

这个肥肠重要的网站就是:https://mvnrepository.com/ 下面我会以mysql-connector-java-8.0.26.jar为例,教会你使用两种方式下载使用jar包资源 首先在搜索栏使用全称或者是关键字对jar包进行搜索 选择你想要的版本 方式一:导入pom文件依赖(…

2021 使用IDEA创建并编写你的第一个Maven项目【图文详解】

1 使用IDEA创建你的第一个Maven项目 2 使用IDEA编写一个Maven项目 1 使用IDEA创建你的第一个Maven项目 新建一个空白项目 File-->New-->Project-->Empty Project 在IDEA中配置JDK 在IDEA中配置Maven 新建一个Maven模块 在test目录下面新建一个resources文件夹 2 使…

能让你的Intellij IDEA 起飞的几个设置(设置背景 字体 快捷键 鼠标悬停提示 提示忽略大小写 取消单行显示)

1 设置主题(背景图片) 2 设置字体 2.1 设置默认的字体及其大小、行间距**墙裂推荐** 2.2 设置字体大小可以随意改变**墙裂推荐** 3 设置鼠标悬停提示 4 提示的时候忽略大小写**墙裂推荐** ​​5 取消单行显示tabs**墙裂推荐** 6 修改类头的文档注释信息 7 设置项目文…

控制台:Unable to import maven project: See logs for details日志:Unable to create injector, see the follow

问题描述: 当我在使用IDEA 完成一个Maven项目的时候,在第一步的pom.xml文件导入依赖时就发生了这个问题,弹窗弹出Uable to import maven project 控制台报 Unable to import maven project: See logs for details的异常。 既然人家都让查看l…

Maven基础教程

1 Maven简介 2 Maven基础概念 2.1 仓库 2.2 坐标 3 依赖的相关知识点 4 生命周期与插件 5 使用Inteli idea完成第一个Maven项目 1 Maven简介 Maven的本质就是一个项目管理工具,用于将项目开发和管理过程抽象成一个项目对象模型(project object model POM) Ma…

java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】

编辑距离算法其实就是,在规定的编辑操作(替换字符串、插入字符串、删除字符串)中,经过几步可以把一个字符串变成另一个字符串,而这个所需的步数就是你的编辑距离。 测试样例: str1 abc str2 yabd 表里的每一个值都代表着将s…

【Java从入门到头秃专栏 】(一)学在Java语法之前

目录 1 初识Java 2 Java环境JDK 3 Java规范 1 初识Java Java是美国的sun(Stanford University Network)公司在1995年推出的一门计算机高级编程语言,虽然说当时参与开发Java的人员有好几名,但是业内公认的Java之父是詹姆斯高斯林(James Gosling)。 Jav…

【Java从入门到头秃专栏 】(二) 注释 数据类型 变量 常量 关键字 标识符 运算符 输入输出

目录 1 注释 2 数据类型 3 变量与常量 4 关键字、标识符 5 运算符 6 键入值、输出值 1 注释 注释就是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便大家更加容易理解程序。注释虽然写在程序中,但是并不参与程序的执行&#…

【Java从入门到头秃专栏 】(三) 控制流程 Math Date DateFormat Calendar System BigDecimal Random

目录 1 控制流程 2 Math类 3 Date类 4 DateFormat类 5 Calendar类(日历类) 6 System类 7 BigDecimal类 8 Random类(随机数) 1 控制流程 1.1 块作用域 块(即复合语句)就是指由若干条Java语句组成的语句,并用一条大括号括起来,并借此形式确定了变量…

IntelliJ IDEA最常用的一些快捷键,学会了室友还以为你在祖安对线

目录 1 快速生成语句 1.1 main语句 1.2 输出语句 1.3 流程控制语句 1.3.1 if判断语句 1.3.2 while循环 1.3.3 for循环 1.3.4 数组、集合的循环操作 1.3.5 迭代器循环操作 1.4 对象实例化、定义变量 1.5 try-catch异常 2 快捷键 2.1 Ctrl系列 2.2 alt系列 2.2.1…

【Java从入门到头秃专栏 6】语法篇(五) :多线程 线程池 可见、原子性 并发包 Lambda表达式

目录 1 多线程 1.1 基本概念 1.2 创建线程的三种方式 1.4 解决线程安全问题的三种方法 1.5 线程通信 1.6 线程状态 2 线程池 2.1线程池的概念 2.2 创建并提交任务 3 可见性 3.1 变量不可见性 3.2 变量不可见性的解决方案 4 原子性 4.1 原子性的概念 4.2 保证原…