MongoDB文档--架构体系

阿丹:

        在开始学习先了解以及目标知识的架构体系。就能事半功倍。

架构体系

   MongoDB的架构体系由以下几部分组成:

  1. 存储结构:MongoDB采用文档型存储结构,一个数据库包含多个集合,一个集合包含多个文档。
  2. 存储形式:MongoDB采用二进制存储形式,数据以二进制形式存储在数据库中。
  3. 目录结构:MongoDB服务(mongod)负责数据存储和查询,数据路由服务(mongos)负责数据和查询的路由,shell客户端(mongo)用于与数据库进行交互,导入导出工具(mongoimport / mongoexport)用于导入和导出数据,备份恢复工具(mongodump / mongorestore)用于备份和恢复数据,拉取并重放oplog的工具(mongooplog)用于拉取oplog并重放数据,监控工具(mongostat、mongotop、mongosniff)用于监控数据库的运行状态,GridFS的命令行操作工具(mongofiles)用于操作GridFS文件系统,性能测试工具(mongoperf,暂时只能测I/O)用于测试数据库的性能,查看bson文件的工具(bsondump)用于查看bson文件的内容。
  4. 数据存储:MongoDB的数据存储在一个默认的数据目录中,该目录位于安装目录的data/db下。每个数据库都有一个对应的.ns文件和一些数据文件,数据文件会随着数据量的增加而变得越来越多。
  5. 分片集群:MongoDB支持分片集群部署,可以将数据分布在多个节点上,提高系统的扩展性和可靠性。在分片集群中,每个节点都可以存储数据和路由查询,同时每个节点都有自己的 oplog 和 config set。

综上所述,MongoDB的架构体系包括存储结构、存储形式、目录结构、数据存储和分片集群等方面。这个架构体系使得MongoDB具有高性能、高扩展性、查询语言丰富、易于使用等优点,并且能够满足不同应用场景的需求。

数据库中数据存储架构体系

        MongoDB的数据结构类似于文档型数据库,其数据存储在称为“集合”(Collections)的容器中。每个集合包含多个文档(Documents),每个文档又由多个键值对(Key-Value Pairs)组成。这些键值对包含了具体的属性和值,类似于关系型数据库中的字段(Fields)和数据。

在MongoDB中,一个数据库包含多个集合,这些集合可以按照不同的方式进行组织和分类。与关系型数据库类似,MongoDB也支持使用模式(Schema)来定义文档的结构和属性。

下面是一个简单的MongoDB数据结构的示例:

{"_id": ObjectId("5a5e0f551df5c11b5e5b56c3"),"name": "John Doe","age": 30,"email": "johndoe@example.com","address": {"street": "123 Main St","city": "Anytown","state": "CA","zip": "12345"},"phoneNumbers": [{"type": "home","number": "555-555-1234"},{"type": "work","number": "555-555-5678"}]
}

在这个示例中,我们有一个名为“users”的集合,其中包含一个文档,该文档包含了名为“name”、“age”、“email”、“address”和“phoneNumbers”的属性。其中,“address”和“phoneNumbers”是嵌套的对象和数组,可以包含更复杂的数据类型。

总之,MongoDB的数据结构是基于文档的,每个文档都包含一组键值对,其中每个键都唯一标识一个属性,每个值都是一个数据类型。与关系型数据库不同,MongoDB中的数据类型可以是复杂的对象和数组,而不仅仅是简单的表和字段。

结构解读

在MongoDB中,一个集合(Collection)就像一个容器,用于存储多个文档(Documents)。每个文档就像一个JSON对象,包含一组键值对,其中每个键都唯一标识一个属性,每个值都是一个数据类型。因此,一个集合可以包含多个文档,就像一张表可以包含多行数据一样。

但是,MongoDB中的文档并不是像关系型数据库中的行那样存储在集合中的。相反,文档之间是独立的存在的,它们只是被存储在集合中以便可以轻松地查询和管理。这也就意味着,在MongoDB中,文档的顺序是不确定的,它们可以在集合中任意排列和重新排列。

总之,MongoDB中的集合类似于关系型数据库中的表,但它们可以包含多个文档,每个文档都是一个独立的JSON对象,具有自己的键值对和数据类型。

类似于一个集合就是一个表,里面可以放很多不规定字段的对象。

对比mysql来说在mysql中的表中的对象是已经被规定好字段以及格式的,这就是MongoDB的优点。更加的灵活,他们只需要排列在集合中就可以被存入并且可以被查询和使用。

mongdb工作原理-增/删/改/查原理

MongoDB是一种基于文档的NoSQL数据库,其工作原理如下:

增加数据:

当需要向MongoDB中添加数据时,可以通过insertOne()insertMany()等方法将一个或多个文档插入到集合中。这些文档可以是JSON格式,也可以是其他数据类型,例如二进制数据或地理位置信息等。

删除数据:

要删除MongoDB中的数据,可以使用deleteOne()deleteMany()findOne()等方法来删除符合条件的文档。删除操作会将选定的文档从集合中永久删除,但不会影响集合中的其他文档。

更新数据:

要更新MongoDB中的数据,可以使用updateOne()updateMany()findOneAndUpdate()等方法来修改符合条件的文档。更新操作可以修改文档中的某些属性或添加新属性,也可以将整个文档替换为另一个文档。

查询数据:

要查询MongoDB中的数据,可以使用find()findOne()count()aggregate()等方法来查找符合条件的文档。查询操作可以根据文档中的属性进行筛选、排序、分页等操作,也可以使用聚合函数对数据进行统计和分析。

总之,MongoDB的工作原理是通过增、删、改、查等操作来管理和操作文档集合。这些操作可以通过MongoDB的驱动程序或客户端进行,支持多种编程语言和平台。由于MongoDB是一种NoSQL数据库,它具有灵活的数据结构和查询语言,能够适应不同类型和规模的应用程序。

mongdb工作原理-高级用法索引原理

MongoDB的索引是用于提高查询效率和加速查询功能的数据结构。索引是在集合中的文档上创建的,它可以包含一个或多个字段,并且按照特定的顺序排序。

索引的工作原理如下:

创建索引:

在集合中创建索引需要使用createIndex()方法,该方法可以指定索引的字段和排序方式。例如,以下代码将在集合中的age字段上创建一个升序索引:

db.collection.createIndex({ age: 1 })

查询索引: 

创建索引后,可以使用find()方法进行查询。MongoDB将根据索引的排序方式进行查询,从而快速定位到需要的数据。例如,以下代码将查询年龄大于等于18岁的所有文档:

db.collection.find({ age: { $gte: 18 } })

更新索引: 

当集合中的数据发生变化时,索引也需要随之更新。当插入、更新或删除文档时,MongoDB会自动更新相关的索引。如果要手动更新索引,可以使用update()方法或save()方法来更新文档。

删除索引:

要删除集合中的索引,可以使用dropIndex()方法。例如,以下代码将删除在age字段上创建的索引:

db.collection.dropIndex({ age: 1 })

总之,MongoDB的索引是用于提高查询效率和加速查询功能的数据结构,可以在集合中的文档上创建,包含一个或多个字段,并按照特定的顺序排序。索引的创建、查询、更新和删除都需要使用相应的MongoDB方法进行操作。

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

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

相关文章

Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析

文章目录 一、Quartz 基本介绍二、Quartz Java 编程1、文档2、引入依赖3、入门案例4、默认配置文件 三、Quartz 重要组件1、Quartz架构体系2、JobDetail3、Trigger(1)代码实例(2)SimpleTrigger(3)CalendarI…

python-Excel数据模型文档转为MySQL数据库建表语句(需要连接数据库)-工作小记

将指定Excel文档转为create table 建表语句。该脚本适用于单一且简单的建表语句 呈现效果 代码 # -*- coding:utf-8 -*- # Time : 2023/8/2 17:50 # Author: 水兵没月 # File : excel_2_mysql建表语句.py import reimport pandas as pd import mysql.connectordb 库名mydb m…

ELK高级搜索(一)

文章目录 ELK搜索1.简介1.1 内容1.2 面向 2.Elastic Stack2.1 简介2.2 特色2.3 组件介绍 3.Elasticsearch3.1 搜索是什么3.2 数据库搜索3.3 全文检索3.4 倒排索引3.5 Lucene3.6 Elasticsearch3.6.1 Elasticsearch的功能3.6.2 Elasticsearch使…

电脑安装新系统不知道去哪里下载,看我就够了

大家在日常生活中肯定都会遇到电脑安装系统的需求,如果去微软官方购买正版的系统又很贵,又不太想花这个冤枉钱,这个时候我们就不得不去网上查找一些免费好用的系统,可是百度一下,或者Google一下,各种下载系…

Android性能优化—卡顿分析与布局优化

一、什么是卡顿?或者说我们怎么感知APP卡顿? 这里面涉及到android UI渲染机制,我们先了解一下android UI是怎么渲染的,android的View到底是如何一步一步显示到屏幕上的? android系统渲染页面流程: 1&…

短视频矩阵营销系统技术开发者开发笔记分享

一、开发短视频seo抖音矩阵系统需要遵循以下步骤: 1. 确定系统需求:根据客户的需求,确定系统的功能和特点,例如用户注册登录、视频上传、视频浏览、评论点赞等。 2. 设计系统架构:根据系统需求,设计系统的…

[STL]详解list模拟实现

[STL]list模拟实现 文章目录 [STL]list模拟实现1. 整体结构总览2. 成员变量解析3. 默认成员函数构造函数1迭代器区间构造函数拷贝构造函数赋值运算符重载析构函数 4. 迭代器及相关函数迭代器整体结构总览迭代器的模拟实现begin函数和end函数begin函数和end函数const版本 5. 数据…

FreeIPA Server/Client不同版本组合,对podman rootless container的支持

FreeIPA Server/Client不同版本组合,对podman rootless container的支持 根据实验, CentOS 7.9 yum仓库自带的FreeIPA Server 4.6.8, ipa client版本支持CentOS 7.9 yum仓库自带的FreeIPA Client 4.6.8不支持subids,podman调用…

机器学习-Basic Concept

机器学习(Basic Concept) videopptblog Where does the error come from? 在前面我们讨论误差的时候,我们提到了Average Error On Testing Data是最重要的 A more complex model does not lead to better performance on test data Bias And Variance Bias(偏差) …

re学习(26)攻防世界-re-BABYRE(IDA无法分析出函数-代码混淆)

题目链接:https://adworld.xctf.org.cn/challenges/list elf是一种对可执行文件,目标文件和库使用的文件格式,跟window下的PE文件格式类似。载入IDA后如果需要对此文件进行远程调试,需要用linux系统,比如说Ubuntu&…

【机器学习】西瓜书学习心得及课后习题参考答案—第3章线性模型

过了一遍第三章,大致理解了内容,认识了线性回归模型,对数几率回归模型,线性判别分析方法,以及多分类学习,其中有很多数学推理过程以参考他人现有思想为主,没有亲手去推。 术语学习 线性模型 l…

排序八卦炉之冒泡、快排

文章目录 1.冒泡排序1.1代码实现1.2复杂度 2.快速排序2.1人物及思想介绍【源于百度】2.2hoare【霍尔】版本1.初识代码2.代码分析3.思其因果 3.相关博客 1.冒泡排序 1.1代码实现 //插入排序 O(N)~O(N^2) //冒泡排序 O(N)~O(N^2) //当数据有序 二者均为O(N) //当数据接近有序或…

【多模态】ALIGN——使用噪声文本数据进行视觉语言感知预训练

ALIGN: A Large-scale ImaGe and Noisy-text embedding 目录 🍭🍭1.网络介绍 🍭🍭2.大规模噪声图像文本数据集 🐸🐸2.1图像过滤器 🐸🐸2.2文本过滤器 🍭&#x1f3…

Bean的实例化方法

目录 1.工厂模式通常有三种形态: 2.简单工厂 2.1 静态工厂 2.1通过factory-bean实例化 2.3通过FactoryBean接口实例化 3.测试 关于容器的使用 3.1获得spring文件方式 3.2getBean方式 4.关闭容器 1.工厂模式通常有三种: 第一种:简单工…

利用鸿鹄快速构建公司IT设备管理方案

需求描述 相信应该有一部分朋友跟我们一样,公司内部有很多各种各样的系统,比如资产管理、CRM、issue管理等等。这篇文章介绍下,鸿鹄是如何让我们的资产系统,按照我们的需求展示数据的。 我们的资产管理系统,是使用开源…

Go语音介绍

Go语言介绍 Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言。 Go是静态强类型语言,是区别于解析型语言的编译型语言。 解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。 编译型语言——源代码编…

Vue3描述列表(Descriptions)

😁 整体功能效果与 ant design vue 保持高度一致 😁 包含两种组件:Descriptions 和 DescriptionsItem(必须搭配使用!) 效果如下图:在线预览 APIs Descriptions 参数说明类型默认值必传title…

删除注释(力扣)

删除注释 题目 给一个 C 程序,删除程序中的注释。这个程序source是一个数组,其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风格,行内注释和块注释。 字符串// 表示行注释,表示//和其右侧…

冒泡排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 比较前后相邻的两个数据,如果前面数据大于后面的数据,就将这两个数据互换。这样对数组的第0个数据到第 N - 1 个数据进行一次遍历后,最大的一个数据就 “沉” 到数组的第 N - 1 个位置。 N N - …

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来,一起交流如何能脱单!!! 为什么——我太羡慕有对象的人了哭死!!!!!! 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…