非關型數據庫之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.pswp.cn/news/535153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535153.shtml
英文地址,請注明出處:http://en.pswp.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 保證原…