MongoDB(2)基本概念 & 文檔引用

來源:互聯網
上載者:User
MongoDB 入門專欄

http://blog.csdn.net/column/details/19681.html


MongoDB 基本概念
以下是部分SQL術語概念和MongoDB 術語概念的對照:

SQL術語/概念 MongoDB術語/概念 解釋/說明
database database 資料庫
table collection 資料庫表/集合
row document 資料記錄行/文檔
column field 資料欄位/域
index index 索引
table joins   表串連,MongoDB不支援
primary key primary key 主鍵,MongoDB自動將_id欄位設定為主鍵


資料庫 database 一個mongodb中可以建立多個資料庫,  預設的資料庫為 "db" ,該資料庫儲存在啟動參數 dbpath 指定的目錄中; MongoDB的單個執行個體可以容納多個獨立的資料庫 database,每一個 database 都有自己的集合 collection 和許可權,不同的資料庫也放置在不同的檔案中;
以下是查看資料庫的一些基本的指令:
 
# 顯示當前許可權下 mongodb 所有的資料庫
show dbs   
show databases 
 
# 顯示當前資料庫物件或集合名稱
db
 
# 串連(使用)指定的資料庫
use data_name
mongodb 有以下保留資料庫, admin: 從許可權的角度來看,這是"root"資料庫。要是將一個使用者添加到這個資料庫,這個使用者自動繼承所有資料庫的許可權。一些特定的伺服器端命令也只能從這個資料庫運行,比如列出所有的資料庫或者關閉伺服器;
local: 這個資料永遠不會被複製,可以用來儲存限於本地單台伺服器的任意集合;
config: 當Mongo用於分區設定時,config資料庫在內部使用,用於儲存分區的相關資訊;

集合 colletion collection 是 mongodb 的文檔組,類似於 RDBMS 中的表格 table; 集合存在於資料庫中,集合沒有固定的結構,即在對集合可以插入不同格式和類型的資料,但通常情況下插入集合的資料都會有一定的關聯性,如可以將以下不同資料結構的文檔插入到文檔中:  
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
以下是查看 collection 的指令:
 
use local
show collections     # 顯示當前 db 下的所有 collection
show tables          # 同上
對於 collection 的命名,不能以 "system." 開頭,同時最好不要存在系統保留字元;
文檔 document document 是一組索引值(key-value)對(即BSON),mongo 的文檔不需要設定相同的欄位,並且相同的欄位不需要相同的資料類型; 一個簡單的 document 例子如下:
 
{"site":"www.google.com","name":"Google"}
在 document 中的值可以是 mongodb 支援的各種資料類型,區分類型和大小寫,在一個 document 不能存在相同的 key,而且 document 的 key 為 string 類型(一般情況下為 UTF-8 編碼格式 );
中繼資料 mongodb 的每一個資料庫的中繼資料(元資訊)儲存在 <db_name>.system.*  下的 collection 中,主要的 colletion 如下:
dbname.system.namespaces 列出所有名字空間
dbname.system.indexes 列出所有索引
dbname.system.profile 包含資料庫概要(profile)資訊
dbname.system.users 列出所有可訪問資料庫的使用者
dbname.local.sources 包含複製對端(slave)的伺服器資訊和狀態

對於修改系統集合中的對象有如下限制。 {system.indexes} 插入資料,可以建立索引,但除此之外該表資訊是不可變的; {system.users} 是可修改的; {system.profile} 是可刪除的;

資料類型

 mongoDB 支援多種資料類型,以下是常用的幾種;

String 字串。儲存資料常用的資料類型。在 MongoDB 中,UTF-8 編碼的字串才是合法的。
Integer 整型數值。用於儲存數值。根據環境所在的伺服器,可分為 32 位或 64 位元。
Boolean 布爾值。用於儲存布爾值(真/假)。
Double 雙精確度浮點值。用於儲存浮點值。
Min/Max keys 將一個值與 BSON(二進位的 JSON)元素的最低值和最高值相對比。
Array 用於將數組或列表或多個值儲存為一個鍵。
Timestamp 時間戳記。記錄文檔修改或添加的具體時間。
Object 用於內嵌文檔。
Null 用於建立空值。
Symbol 符號。該資料類型基本上等同於字串類型,但不同的是,它一般用於採用特殊符號類型的語言。
Date 日期時間。用 UNIX 時間格式來儲存當前日期或時間。你可以指定自己的日期時間:建立 Date 對象,傳入年月日資訊。
Object ID 物件識別碼。用於建立文檔的 ID。
Binary Data 位元據。用於儲存位元據。
Code 代碼類型。用於在文檔中儲存 JavaScript 代碼。
Regular expression Regex類型。用於儲存Regex。


MongoDB ObjectId  mongodb 的 ObjectId 用於表示文檔的 _id 鍵,通常為自動產生,ObjectId 是一個 12 位元組的 BSON 類型資料,格式如下:  
_id : ObjectId("5a83c0d8a04c12209d79eea1")
 <時間戳記-4個位元組><機器識別碼-3個位元組><進程ip(PID)-2個位元組><隨機數-3個位元組>
建立新的ObjectId  
> newObjectId = ObjectId()
# 可以使用自己建立的 ObjectId 代替系統自動建立的 ObjectId
> myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
擷取文檔的時間戳記  
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
ISODate("2014-04-12T21:49:17Z")
ObjectId 轉換為字串  
> new ObjectId().str
5a85711e049466e633bc36ba


MongoDB 的關係 MongoDB 的關係表示多個文檔之間在邏輯上的相互聯絡, 文檔間可以通過嵌入和引用來建立聯絡。 MongoDB 中的關係包括以下: 1:1 
1: N 
N: 1 
N: N 
以下是 2 個簡單的文檔結構: user 文檔  
{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "name": "Tom Hanks",
   "contact": "987654321",
}
address 文檔  
{
   "_id":ObjectId("52ffc4a5d85242602e000000"),
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "Los Angeles",
   "state": "California"
} 
user 和 address 之間的關係是 1:N ,可以使用以下 2 種方式表示它們的關係:
嵌入式關係 可以將 address 嵌入到 user 文檔種,這樣的優勢是比較直觀,尋找操作方便,但是隨著資料量增大,會很影響讀寫速度;  
{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.