MongoDB 數據庫,對象,集合 MongoDB學習平臺

http://www.w3cschool.cc/mongodb/mongodb-databases-documents-collections.htmlphp

 

 

MongoDB 數據庫,對象,集合

 


描述

無論咱們學習什麼數據庫都應該學習其中的基礎概念,在mongodb中基本的概念是文檔、集合、數據庫,下面咱們挨個介紹。html

 


數據庫

一個mongodb中能夠創建多個數據庫。mongodb

MongoDB的默認數據庫爲"db",該數據庫存儲在data目錄中。數據庫

在MongoDB中能夠建立數據庫,若是你想使用MongoDB,建立數據庫不是必要的。json

"show dbs" 命令能夠顯示全部數據的列表。數組

show-dbs-command

執行 "db" 命令能夠顯示當前數據庫對象或者集合。服務器

db-command

運行"use"命令,能夠鏈接到一個指定的數據庫。數據結構

use-command

以上實例命令中,"student" 是你要檢索的數據庫。app

在下一個章節咱們將詳細講解MongoDB中命令的使用。函數

數據庫名稱能夠是任何字符,可是不能包含空字符串,點號(.),或者" "。

"system" 做爲系統保留字符串不能做爲數據庫名。

數據庫名不能包含 "$"。

 


文檔

文檔是mongodb中的最核心的概念,是其核心單元,咱們能夠將文檔類比成關係型數據庫中的每一行數據。

多個鍵及其關聯的值有序的放置在一塊兒就是文檔。在mongodb中使用一種類json的bson存儲數據。

bson數據能夠理解爲在json的基礎上添加了一些json中沒有的數據類型。

若是咱們會json,那麼bson咱們就已經掌握了一半了,至於新添加的數據類型後面我會介紹。

文檔例子以下:

{ site : "w3cschool.cc" }

一般,"object(對象)" 術語是指一個文件。

文件相似於一個RDBMS的記錄。

咱們能夠對集合(collection)進行插入,更新和刪除操做。

下表將幫助您更容易理解Mongo中的一些概念:

RDBMS MongoDB
Table(表) Collection(集合)
Column(欄) Key(鍵)
Value(值) Value(值)
Records / Rows(記錄/列) Document / Object(文檔/對象)

下表爲MongoDB中經常使用的幾種數據類型。

數據類型 描述
string(字符串) 能夠是一個空字符串或者字符組合。
integer(整型) 整數。
boolean(布爾型) 邏輯值 True 或者 False。
double 雙精度浮點型
null 不是0,也不是空。
array 數組:一系列值
object 對象型,程序中被使用的實體。能夠是一個值,變量,函數,或者數據結構。
timestamp timestamp存儲爲64爲的值,只運行一個mongod時能夠確保是惟一的。前32位保存的是UTC時間,單位是秒,後32爲是在這一秒內的計數值,從0開始,每新建一個MongoTimestamp對象就加一。
Internationalized Strings UTF-8 字符串。
Object IDs 在 mongodb中的文檔須要使用惟一的關鍵字_id來標識他們。幾乎每個mongodb文檔都使用_id字段做爲第一個屬性(在系統集合和定容量集合 (capped collection)中有一些例外)。_id值能夠是任何類型,最多見的作法是使用ObjectId類型。

 


集合

集合就是一組文檔的組合。若是將文檔類比成數據庫中的行,那麼集合就能夠類比成數據庫的表。

在mongodb中的集合是無模式的,也就是說集合中存儲的文檔的結構能夠是不一樣的,好比下面的兩個文檔能夠同時存入到一個集合中:

{"name":"mengxiangyue"} {"Name":"mengxiangyue","sex":"nan"}

當第一個文檔插入時,集合就會被建立。


 

合法的集合名

集合名稱必須以字母或下劃線開頭。

集合名能夠保護數字

集合名稱不能使美圓符"$","$"是系統保留字符。

集合的名字 最大不能超過128個字符 。

另外,"."號的使用在集合當中是容許的,它們被成爲子集合(Subcollection);好比你有一個blog集合,你可使用blog.title,blog.content或者blog.author來幫組你更好地組織集合。

以下實例:

db.tutorials.php.findOne()

 

capped collections

Capped collections 就是固定大小的collection。

它有很高的性能以及隊列過時的特性(過時按照插入的順序). 有點和 "RRD" 概念相似。

Capped collections是高性能自動的維護對象的插入順序。它很是適合相似記錄日誌的功能 和標準的collection不一樣,你必需要顯式的建立一個capped collection, 指定一個collection的大小,單位是字節。collection的數據存儲空間值提早分配的。

 

要注意的是指定的存儲大小包含了數據庫的頭信息。

 

> db.createCollection("mycoll", {capped:true, size:100000})
  • 在capped collection中,你能添加新的對象。
  • 能進行更新,然而,對象不會增長存儲空間。若是增長,更新就會失敗 。
  • 數據庫不容許進行刪除。使用drop()方法刪除collection全部的行。
  • 注意: 刪除以後,你必須顯式的從新建立這個collection。
  • 在32bit機器中,capped collection最大存儲爲1e9( 1X109)個字節。

 

元數據

數據庫的信息是存儲在集合中。它們使用了系統的命名空間:

dbname.system.*

在MongoDB數據庫中名字空間 <dbname>.system.* 是包含多種系統信息的特殊集合(Collection),以下:

集合命名空間 描述
dbname.system.namespaces 列出全部名字空間。
dbname.system.indexes 列出全部索引。
dbname.system.profile 包含數據庫概要(profile)信息。
dbname.system.users 列出全部可訪問數據庫的用戶。
dbname.local.sources 包含複製對端(slave)的服務器信息和狀態。

對於修改系統集合中的對象有以下限制。

在{{system.indexes}}插入數據,能夠建立索引。但除此以外該表信息是不可變的(特殊的drop index命令將自動更新相關信息)。

{{system.users}}是可修改的。 {{system.profile}}是可刪除的。

相關文章
相關標籤/搜索