MongoDB

mogon簡(jiǎn)介

MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)思喊。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案壁酬。
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富恨课,最像關(guān)系數(shù)據(jù)庫(kù)的舆乔。

NoSQL簡(jiǎn)介

NoSQL:非關(guān)系型數(shù)據(jù)庫(kù)(不僅僅是SQL)。目前關(guān)系型數(shù)據(jù)庫(kù)占絕大多數(shù)剂公。

關(guān)系型數(shù)據(jù)庫(kù)遵循ACID規(guī)則

  1. A (Atomicity) 原子性原子性很容易理解希俩,也就是說(shuō)事務(wù)里的所有操作要么全部做完,要么都不做纲辽,事務(wù)成功的條件是事務(wù)里的所有操作都成功颜武,只要有一個(gè)操作失敗璃搜,整個(gè)事務(wù)就失敗,需要回滾鳞上。
  1. C (Consistency) 一致性一致性也比較容易理解这吻,也就是說(shuō)數(shù)據(jù)庫(kù)要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性約束篙议。
  2. I (Isolation) 獨(dú)立性所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響唾糯,如果一個(gè)事務(wù)要訪問(wèn)的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交鬼贱,它所訪問(wèn)的數(shù)據(jù)就不受未提交事務(wù)的影響移怯。
  3. D (Durability) 持久性持久性是指一旦事務(wù)提交后,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫(kù)上这难,即使出現(xiàn)宕機(jī)也不會(huì)丟失舟误。

分布式計(jì)算的優(yōu)點(diǎn)

可靠性(容錯(cuò)) :分布式計(jì)算系統(tǒng)中的一個(gè)重要的優(yōu)點(diǎn)是可靠性。一臺(tái)服務(wù)器的系統(tǒng)崩潰并不影響到其余的服務(wù)器姻乓。
可擴(kuò)展性:在分布式計(jì)算系統(tǒng)可以根據(jù)需要增加更多的機(jī)器脐帝。
資源共享:共享數(shù)據(jù)是必不可少的應(yīng)用,如銀行糖权,預(yù)訂系統(tǒng)。
靈活性:由于該系統(tǒng)是非常靈活的炸站,它很容易安裝星澳,實(shí)施和調(diào)試新的服務(wù)。
更快的速度:分布式計(jì)算系統(tǒng)可以有多臺(tái)計(jì)算機(jī)的計(jì)算能力旱易,使得它比其他系統(tǒng)有更快的處理速度禁偎。
開(kāi)放系統(tǒng):由于它是開(kāi)放的系統(tǒng),本地或者遠(yuǎn)程都可以訪問(wèn)到該服務(wù)阀坏。
更高的性能:相較于集中式計(jì)算機(jī)網(wǎng)絡(luò)集群可以提供更高的性能(及更好的性?xún)r(jià)比)如暖。

分布式計(jì)算的缺點(diǎn)

故障排除: :故障排除和診斷問(wèn)題。
**軟件: **更少的軟件支持是分布式計(jì)算系統(tǒng)的主要缺點(diǎn)忌堂。
網(wǎng)絡(luò):網(wǎng)絡(luò)基礎(chǔ)設(shè)施的問(wèn)題盒至,包括:傳輸問(wèn)題,高負(fù)載士修,信息丟失等枷遂。
**安全性: **開(kāi)發(fā)系統(tǒng)的特性讓分布式計(jì)算系統(tǒng)存在著數(shù)據(jù)的安全性和共享的風(fēng)險(xiǎn)等問(wèn)題。

NoSQL 優(yōu)勢(shì)

NoSQL用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)棋嘲。(例如谷歌或Facebook每天為他們的用戶收集萬(wàn)億比特的數(shù)據(jù))酒唉。這些類(lèi)型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余操作就可以橫向擴(kuò)展沸移。

RDBMS vs NoSQL

**RDBMS **

  • 高度組織化結(jié)構(gòu)化數(shù)據(jù)
  • 結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)
  • 數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中痪伦。
  • 數(shù)據(jù)操縱語(yǔ)言侄榴,數(shù)據(jù)定義語(yǔ)言
  • 嚴(yán)格的一致性
  • 基礎(chǔ)事務(wù)

**NoSQL **

  • 代表著不僅僅是SQL
  • 沒(méi)有聲明性查詢(xún)語(yǔ)言
  • 沒(méi)有預(yù)定義的模式
  • 鍵 - 值對(duì)存儲(chǔ),列存儲(chǔ)网沾,文檔存儲(chǔ)癞蚕,圖形數(shù)據(jù)庫(kù)
  • 最終一致性,而非ACID屬性
  • 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)
  • CAP定理
  • 高性能绅这,高可用性和可伸縮性

CAP定理(CAP theorem)

在計(jì)算機(jī)科學(xué)中, CAP定理(CAP theorem), 又被稱(chēng)作 布魯爾定理(Brewer's theorem), 它指出對(duì)于一個(gè)分布式計(jì)算系統(tǒng)來(lái)說(shuō)涣达,不可能同時(shí)滿足以下三點(diǎn):

  • 一致性(Consistency) :所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù)
  • 可用性(Availability) :保證每個(gè)請(qǐng)求不管成功或者失敗都有響應(yīng)
  • 分隔容忍(Partition tolerance) :系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作

CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求证薇,最多只能同時(shí)較好的滿足兩個(gè)度苔。因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫(kù)分成了滿足 CA 原則浑度、滿足 CP 原則和滿足 AP 原則三 大類(lèi):

  • CA(單點(diǎn)集群):滿足一致性寇窑,可用性的系統(tǒng),通常在可擴(kuò)展性上不太強(qiáng)大箩张。
  • CP(滿足一致性):通常性能不是特別高甩骏。
  • AP(滿足可用性):分區(qū)容忍性的系統(tǒng),通诚瓤叮可能對(duì)一致性要求低一些饮笛。

NoSQL的優(yōu)點(diǎn)/缺點(diǎn)

  • 優(yōu)點(diǎn):
  • 高可擴(kuò)展性
  • 分布式計(jì)算
  • 低成本
  • 架構(gòu)的靈活性,半結(jié)構(gòu)化數(shù)據(jù)
  • 沒(méi)有復(fù)雜的關(guān)系
  • 缺點(diǎn):
    • 沒(méi)有標(biāo)準(zhǔn)化
    • 有限的查詢(xún)功能(到目前為止)
    • 最終一致是不直觀的程序

BASE

CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性论熙,可用性和分區(qū)容錯(cuò)性這三個(gè)需求福青,最多只能同時(shí)較好的滿足兩個(gè)。BASE是NoSQL數(shù)據(jù)庫(kù)通常對(duì)可用性及一致性的弱要求原則:

  • Basically Availble(基本可用)脓诡。
  • Soft-state(軟狀態(tài)/柔性事務(wù)): "Soft state" 可以理解為"無(wú)連接"的, 而 "Hard state" 是"面向連接"的无午。
  • Eventual Consistency(最終一致性): 也是 ACID 的最終目的。

ACID vs BASE

| ACID | BASE |
|:-------:|:-------:|
| 原子性(Atomicity) | 基本可用(Basically Available) |
| 一致性(Consistency) | 軟狀態(tài)/柔性事務(wù)(Soft state) |
| 隔離性(Isolation) | 最終一致性 (Eventual consistency) |
| 持久性 (Durable) | |

NoSQL 數(shù)據(jù)庫(kù)分類(lèi)

| 類(lèi)型 | 部分代表 | 簡(jiǎn)介 |
|:-------:|:-------:|:----------|
| 列存儲(chǔ) | Hbase | 顧名思義祝谚,是按列存儲(chǔ)數(shù)據(jù)的宪迟。最大的特點(diǎn)是方便存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),方便做數(shù)據(jù)壓縮交惯,對(duì)針對(duì)某一列或者某幾列的查詢(xún)有非常大的IO優(yōu)勢(shì)次泽。 |
| 文檔存儲(chǔ) | MongoDB | 文檔存儲(chǔ)一般用類(lèi)似json的格式存儲(chǔ),存儲(chǔ)的內(nèi)容是文檔型的商玫。這樣也就有有機(jī)會(huì)對(duì)某些字段建立索引箕憾,實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)的某些功能。 |
| key-value存儲(chǔ) | Memcache Redis | 可以通過(guò)key快速查詢(xún)到其value拳昌。一般來(lái)說(shuō)袭异,存儲(chǔ)不管value的格式,照單全收炬藤。(Redis包含了其他功能) |
| 圖存儲(chǔ) | FlockDB | 圖形關(guān)系的最佳存儲(chǔ)御铃。使用傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)來(lái)解決的話性能低下碴里,而且設(shè)計(jì)使用不方便。 |
| 對(duì)象存儲(chǔ) | Versant | 通過(guò)類(lèi)似面向?qū)ο笳Z(yǔ)言的語(yǔ)法操作數(shù)據(jù)庫(kù)上真,通過(guò)對(duì)象的方式存取數(shù)據(jù)咬腋。 |
| xml數(shù)據(jù)庫(kù) | BaseX | 高效的存儲(chǔ)XML數(shù)據(jù),并支持XML的內(nèi)部查詢(xún)語(yǔ)法睡互,比如XQuery,Xpath根竿。 |

MongoDB主要特點(diǎn)

  • 可以在記錄中設(shè)置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來(lái)實(shí)現(xiàn)更快的排序。
  • 可以通過(guò)本地或者網(wǎng)絡(luò)創(chuàng)建數(shù)據(jù)鏡像就珠,使得MongoDB有更強(qiáng)的擴(kuò)展性寇壳。
  • 如果負(fù)載的增加(需要更多的存儲(chǔ)空間和更強(qiáng)的處理能力) ,可以分布在計(jì)算機(jī)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)上妻怎,這就是所謂的分片壳炎。
  • 支持豐富的查詢(xún)表達(dá)式。查詢(xún)指令使用JSON形式的標(biāo)記逼侦,可輕易查詢(xún)文檔中內(nèi)嵌的對(duì)象及數(shù)組匿辩。
  • 使用update()命令可以實(shí)現(xiàn)替換完成的文檔(數(shù)據(jù))或者一些指定的數(shù)據(jù)字段 。
  • 其中的Map/reduce主要是用來(lái)對(duì)數(shù)據(jù)進(jìn)行批量處理和聚合操作榛丢。
  • Map和Reduce铲球。Map函數(shù)調(diào)用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數(shù)進(jìn)行處理晰赞。
  • Map函數(shù)和Reduce函數(shù)是使用Javascript編寫(xiě)的睬辐,并可以通過(guò)db.runCommand或mapreduce命令來(lái)執(zhí)行MapReduce操作。
  • GridFS是MongoDB中的一個(gè)內(nèi)置功能宾肺,可以用于存放大量小文件。
  • 允許在服務(wù)端執(zhí)行腳本侵俗,可以用Javascript編寫(xiě)某個(gè)函數(shù)瀑焦,直接在服務(wù)端執(zhí)行逻悠,也可以把函數(shù)的定義存儲(chǔ)在服務(wù)端,下次直接調(diào)用即可。

Linux平臺(tái)安裝MongoDB

1. 下載完安裝包写穴,并解壓 tgz(以下演示的是 64 位 Linux上的安裝) 。
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下載 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解壓 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 將解壓包拷貝到指定目錄
2. MongoDB 的可執(zhí)行文件位于 bin 目錄下耘戚,所以可以將其添加到 PATH 路徑中:
export PATH= /usr/local/mongodb/bin:$PATH
3. 創(chuàng)建數(shù)據(jù)庫(kù)目錄
MongoDB的數(shù)據(jù)存儲(chǔ)在data目錄的db目錄下祷舀,但是這個(gè)目錄在安裝過(guò)程不會(huì)自動(dòng)創(chuàng)建,所以你需要手動(dòng)創(chuàng)建data目錄码泛,并在data目錄中創(chuàng)建db目錄猾封。
以下實(shí)例中我們將data目錄創(chuàng)建于根目錄下(/)。
注意:/data/db 是 MongoDB 默認(rèn)的啟動(dòng)的數(shù)據(jù)庫(kù)路徑(--dbpath)噪珊。
mkdir -p /data/db
4. 命令行中運(yùn)行 MongoDB 服務(wù)
你可以再命令行中執(zhí)行mongo安裝目錄中的bin目錄執(zhí)行mongod命令來(lái)啟動(dòng)mongdb服務(wù)晌缘。
注意:如果你的數(shù)據(jù)庫(kù)目錄不是/data/db齐莲,可以通過(guò) --dbpath 來(lái)指定。
$ ./mongod 2015-09-25T16:39:50.549+0800 I JOURNAL [initandlisten] journal dir=/data/db/journal 2015-09-25T16:39:50.550+0800 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2015-09-25T16:39:50.869+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.16 2015-09-25T16:39:51.206+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.52 2015-09-25T16:39:52.775+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 7.7
5. MongoDB后臺(tái)管理 Shell
如果你需要進(jìn)入MongoDB后臺(tái)管理磷箕,你需要先打開(kāi)mongodb裝目錄的下的bin目錄选酗,然后執(zhí)行mongo命令文件。
MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來(lái)對(duì)MongoDB進(jìn)行操作和管理的交互式環(huán)境岳枷。
當(dāng)你進(jìn)入mongoDB后臺(tái)后芒填,它默認(rèn)會(huì)鏈接到 test 文檔(數(shù)據(jù)庫(kù)):
$ cd /usr/local/mongodb/bin $ ./mongo MongoDB shell version: 3.0.6 connecting to: test Welcome to the MongoDB shell.
由于它是一個(gè)JavaScript shell,您可以運(yùn)行一些簡(jiǎn)單的算術(shù)運(yùn)算:
> 2+2 4 3+6 9
現(xiàn)在讓我們插入一些簡(jiǎn)單的數(shù)據(jù)空繁,并對(duì)插入的數(shù)據(jù)進(jìn)行檢索:
> db.runoob.insert({x:10}) #在runoob表插入key為x殿衰,value為10的一條數(shù)據(jù) WriteResult({ "nInserted" : 1 }) #成功 db.runoob.find() #查詢(xún)r(jià)unoob表中的所有數(shù)據(jù) { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } #_id為系統(tǒng)為每條數(shù)據(jù)默認(rèn)分配的唯一標(biāo)識(shí)(可以自己指定)key為x的值為10
6. MongoDb web 用戶界面
MongoDB 提供了簡(jiǎn)單的 HTTP 用戶界面。 如果你想啟用該功能家厌,需要在啟動(dòng)的時(shí)候指定參數(shù) --rest 播玖。
$ ./mongod --dbpath=/data/db --rest
MongoDB 的 Web 界面訪問(wèn)端口比服務(wù)的端口多1000。
如果你的MongoDB運(yùn)行端口使用默認(rèn)的27017饭于,你可以在端口號(hào)為28017訪問(wèn)web用戶界面蜀踏,即地址為:http://localhost:28017

MongoDb web 用戶界面

MongoDB 概念解析

1. 在mongodb中基本的概念是文檔掰吕、集合果覆、數(shù)據(jù)庫(kù) **

MongoDB 概念解析

MongoDB 概念解析

2. 數(shù)據(jù)庫(kù)(database) **
一個(gè)mongodb中可以建立多個(gè)數(shù)據(jù)庫(kù)。
MongoDB的默認(rèn)數(shù)據(jù)庫(kù)為"db"殖熟,該數(shù)據(jù)庫(kù)存儲(chǔ)在data目錄中局待。
MongoDB的單個(gè)實(shí)例可以容納多個(gè)獨(dú)立的數(shù)據(jù)庫(kù),每一個(gè)都有自己的集合和權(quán)限菱属,不同的數(shù)據(jù)庫(kù)也放置在不同的文件中钳榨。
"show dbs" 命令可以顯示所有數(shù)據(jù)的列表。
$ ./mongo MongoDB shell version: 3.0.6 connecting to: test show dbs local 0.078GB test 0.078GB
執(zhí)行 "db" 命令可以顯示當(dāng)前數(shù)據(jù)庫(kù)對(duì)象或集合纽门。
$ ./mongo MongoDB shell version: 3.0.6 connecting to: test db test
運(yùn)行
"use"
命令薛耻,可以連接到一個(gè)指定的數(shù)據(jù)庫(kù)。
use local switched to db local db local

數(shù)據(jù)庫(kù)也通過(guò)名字來(lái)標(biāo)識(shí)赏陵。數(shù)據(jù)庫(kù)名可以是滿足以下條件的任意UTF-8字符串饼齿。

  • 不能是空字符串("")。
  • 不得含有' '(空格)蝙搔、.缕溉、$、/吃型、\和\0 (空宇符)证鸥。
  • 應(yīng)全部小寫(xiě)。
  • 最多64字節(jié)。

有一些數(shù)據(jù)庫(kù)名是保留的敌土,可以直接訪問(wèn)這些有特殊作用的數(shù)據(jù)庫(kù)镜硕。

  • admin: 從權(quán)限的角度來(lái)看,這是"root"數(shù)據(jù)庫(kù)返干。要是將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫(kù)兴枯,這個(gè)用戶自動(dòng)繼承所有數(shù)據(jù)庫(kù)的權(quán)限。一些特定的服務(wù)器端命令也只能從這個(gè)數(shù)據(jù)庫(kù)運(yùn)行矩欠,比如列出所有的數(shù)據(jù)庫(kù)或者關(guān)閉服務(wù)器财剖。
  • local: 這個(gè)數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可以用來(lái)存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合癌淮。
  • config: 當(dāng)Mongo用于分片設(shè)置時(shí)躺坟,config數(shù)據(jù)庫(kù)在內(nèi)部使用,用于保存分片的相關(guān)信息乳蓄。

**3. 文檔(document) **
文檔是一個(gè)鍵值(key-value)對(duì)(即BSON)咪橙。MongoDB 的文檔不需要設(shè)置相同的字段,并且相同的字段不需要相同的數(shù)據(jù)類(lèi)型虚倒,這與關(guān)系型數(shù)據(jù)庫(kù)有很大的區(qū)別美侦,也是 MongoDB 非常突出的特點(diǎn)。
一個(gè)簡(jiǎn)單的文檔例子如下:
{"site":"www.runoob.com", "name":"菜鳥(niǎo)教程"}

RDBMS 與 MongoDB 對(duì)應(yīng)的術(shù)語(yǔ)

  • 文檔中的鍵/值對(duì)是有序的魂奥。
  • 文檔中的值不僅可以是在雙引號(hào)里面的字符串菠剩,還可以是其他幾種數(shù)據(jù)類(lèi)型(甚至可以是整個(gè)嵌入的文檔)。
  • MongoDB區(qū)分類(lèi)型和大小寫(xiě)耻煤。
  • MongoDB的文檔不能有重復(fù)的鍵具壮。
  • 文檔的鍵是字符串。除了少數(shù)例外情況哈蝇,鍵可以使用任意UTF-8字符棺妓。

文檔鍵命名規(guī)范:

  • 鍵不能含有\(zhòng)0 (空字符)。這個(gè)字符用來(lái)表示鍵的結(jié)尾炮赦。
  • .和$有特別的意義涧郊,只有在特定環(huán)境下才能使用。
  • 以下劃線"_"開(kāi)頭的鍵是保留的(不是嚴(yán)格要求的)眼五。

**4. 集合(collection) **
集合就是 MongoDB 文檔組,類(lèi)似于 RDBMS (關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng):Relational Database Management System)中的表格彤灶。
集合存在于數(shù)據(jù)庫(kù)中看幼,集合沒(méi)有固定的結(jié)構(gòu),這意味著你在對(duì)集合可以插入不同格式和類(lèi)型的數(shù)據(jù)幌陕,但通常情況下我們插入集合的數(shù)據(jù)都會(huì)有一定的關(guān)聯(lián)性诵姜。

比如,我們可以將以下不同數(shù)據(jù)結(jié)構(gòu)的文檔插入到集合中:
{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.runoob.com","name":"菜鳥(niǎo)教程","num":5}
當(dāng)?shù)谝粋€(gè)文檔插入時(shí)搏熄,集合就會(huì)被創(chuàng)建棚唆。
集合名命名規(guī)范:

  • 集合名不能是空字符串""暇赤。
  • 集合名不能含有\(zhòng)0字符(空字符),這個(gè)字符表示集合名的結(jié)尾宵凌。
  • 集合名不能以"system."開(kāi)頭鞋囊,這是為系統(tǒng)集合保留的前綴。
  • 用戶創(chuàng)建的集合名字不能含有保留字符瞎惫。有些驅(qū)動(dòng)程序的確支持在集合名里面包含溜腐,這是因?yàn)槟承┫到y(tǒng)生成的集合中包含該字符。除非你要訪問(wèn)這種系統(tǒng)創(chuàng)建的集合瓜喇,否則千萬(wàn)不要在名字里出現(xiàn)$挺益。

固定大小的集合(Capped collections)
它有很高的性能以及隊(duì)列過(guò)期的特性(過(guò)期按照插入的順序). 有點(diǎn)和 "RRD" 概念類(lèi)似。
Capped collections是高性能自動(dòng)的維護(hù)對(duì)象的插入順序乘寒。它非常適合類(lèi)似記錄日志的功能 和標(biāo)準(zhǔn)的collection不同望众,你必須要顯式的創(chuàng)建一個(gè)capped collection, 指定一個(gè)collection的大小伞辛,單位是字節(jié)烂翰。collection的數(shù)據(jù)存儲(chǔ)空間值提前分配的。
要注意的是指定的存儲(chǔ)大小包含了數(shù)據(jù)庫(kù)的頭信息始锚。
db.createCollection("mycoll", {capped:true, size:100000})

  • 在capped collection中刽酱,你能添加新的對(duì)象。
  • 能進(jìn)行更新瞧捌,然而棵里,對(duì)象不會(huì)增加存儲(chǔ)空間。如果增加姐呐,更新就會(huì)失敗 殿怜。
  • 數(shù)據(jù)庫(kù)不允許進(jìn)行刪除。使用drop()方法刪除collection所有的行曙砂。
  • 注意: 刪除之后头谜,你必須顯式的重新創(chuàng)建這個(gè)collection。
  • 在32bit機(jī)器中鸠澈,capped collection最大存儲(chǔ)為1e9( 1X109)個(gè)字節(jié)柱告。

*5. 元數(shù)據(jù) **
數(shù)據(jù)庫(kù)的信息是存儲(chǔ)在集合中。它們使用了系統(tǒng)的命名空間:
dbname.system.*
在MongoDB數(shù)據(jù)庫(kù)中名字空間 <dbname>.system.
是包含多種系統(tǒng)信息的特殊集合(Collection)笑陈,如下:

元數(shù)據(jù)

對(duì)于修改系統(tǒng)集合中的對(duì)象有如下限制:

  • 在{{system.indexes}}插入數(shù)據(jù)际度,可以創(chuàng)建索引。但除此之外該表信息是不可變的(特殊的drop index命令將自動(dòng)更新相關(guān)信息)涵妥。
  • {{system.users}}是可修改的乖菱。
  • {{system.profile}}是可刪除的。

**6. MongoDB 數(shù)據(jù)類(lèi)型 **


MongoDB 數(shù)據(jù)類(lèi)型

MongoDB連接

**1. 啟動(dòng) MongoDB服務(wù) **
啟動(dòng)只需要在MongoDB安裝目錄的bin目錄下執(zhí)行'mongod'即可。
執(zhí)行啟動(dòng)操作后窒所,mongodb在輸出一些必要信息后不會(huì)輸出任何信息鹉勒,之后就等待連接的建立,當(dāng)連接被建立后吵取,就會(huì)開(kāi)始打印日志信息禽额。
既可以使用 MongoDB shell 來(lái)連接,也可以使用php來(lái)連接海渊。

**2. 通過(guò)shell連接MongoDB服務(wù) **
localhost為主機(jī)名绵疲,這個(gè)選項(xiàng)是必須的:
mongodb://localhost $ ./mongo MongoDB shell version: 3.0.6 connecting to: test mongodb://localhostmongodb://localhost

3. MongoDB連接命令格式 **
使用用戶名和密碼連接到MongoDB服務(wù)器,你必須使用 '
username:password@hostname/dbname**' 格式臣疑,'username'為用戶名盔憨,'password' 為密碼。

使用用戶名和密碼連接登陸到默認(rèn)數(shù)據(jù)庫(kù):
$ ./mongo MongoDB shell version: 3.0.6 connecting to: test mongodb://admin:123456@localhost/

使用用戶名和密碼連接登陸到指定數(shù)據(jù)庫(kù):
mongodb://admin:123456@localhost/test

連接本地?cái)?shù)據(jù)庫(kù)服務(wù)器讯沈,端口是默認(rèn)的郁岩。
mongodb://localhost

使用用戶名fred,密碼foobar登錄localhost的admin數(shù)據(jù)庫(kù)缺狠。
mongodb://fred:foobar@localhost

使用用戶名fred问慎,密碼foobar登錄localhost的baz數(shù)據(jù)庫(kù)。
mongodb://fred:foobar@localhost/baz

連接 replica pair, 服務(wù)器1為example1.com服務(wù)器2為example2挤茄。
mongodb://example1.com:27017,example2.com:27017

連接 replica set 三臺(tái)服務(wù)器 (端口 27017, 27018, 和27019):
mongodb://localhost,localhost:27018,localhost:27019

連接 replica set 三臺(tái)服務(wù)器, 寫(xiě)入操作應(yīng)用在主服務(wù)器 并且分布查詢(xún)到從服務(wù)器如叼。
mongodb://host1,host2,host3/?slaveOk=true

直接連接第一個(gè)服務(wù)器,無(wú)論是replica set一部分或者主服務(wù)器或者從服務(wù)器穷劈。
mongodb://host1,host2,host3/?connect=direct;slaveOk=true

當(dāng)你的連接服務(wù)器有優(yōu)先級(jí)笼恰,還需要列出所有服務(wù)器,你可以使用上述連接方式:

安全模式連接到localhost歇终。
mongodb://localhost/?safe=true

以安全模式連接到replica set社证,并且等待至少兩個(gè)復(fù)制服務(wù)器成功寫(xiě)入,超時(shí)時(shí)間設(shè)置為2秒评凝。
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

**4. 參數(shù)選項(xiàng)說(shuō)明 **

標(biāo)準(zhǔn)格式:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

MongoDB連接命令標(biāo)準(zhǔn)格式參數(shù)選項(xiàng)說(shuō)明

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末追葡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奕短,更是在濱河造成了極大的恐慌宜肉,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翎碑,死亡現(xiàn)場(chǎng)離奇詭異谬返,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)杈女,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人达椰,你說(shuō)我怎么就攤上這事翰蠢。” “怎么了啰劲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵梁沧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蝇裤,道長(zhǎng)廷支,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任栓辜,我火速辦了婚禮恋拍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藕甩。我一直安慰自己施敢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布僵娃。 她就那樣靜靜地躺著,像睡著了一般腋妙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骤素,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天匙睹,我揣著相機(jī)與錄音,去河邊找鬼谆甜。 笑死垃僚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的规辱。 我是一名探鬼主播谆棺,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罕袋!你這毒婦竟也來(lái)了改淑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浴讯,失蹤者是張志新(化名)和其女友劉穎朵夏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體榆纽,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仰猖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捏肢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饥侵。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸵赫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躏升,到底是詐尸還是另有隱情辩棒,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布膨疏,位于F島的核電站一睁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏佃却。R本人自食惡果不足惜者吁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望双霍。 院中可真熱鬧砚偶,春花似錦、人聲如沸洒闸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丘逸。三九已至单鹿,卻和暖如春深纲,著一層夾襖步出監(jiān)牢的瞬間湃鹊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工怀愧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芯义,地道東北人妻柒。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓绑警,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親计盒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子章郁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容