轉(zhuǎn)載自:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
Mongo中的一些概念
SQL術(shù)語/概念 | MongoDB術(shù)語/概念 | 解釋/說明 |
---|---|---|
database | database | 數(shù)據(jù)庫 |
table | collection | 數(shù)據(jù)庫表/集合 |
row | document | 數(shù)據(jù)記錄行/文檔 |
column | field | 數(shù)據(jù)字段/域 |
index | index | 索引 |
table joins | 表連接,MongoDB不支持 | |
primary key | primary key | 主鍵,MongoDB自動將_id字段設(shè)置為主鍵 |
數(shù)據(jù)庫
- 一個mongodb中可以建立多個數(shù)據(jù)庫。
- MongoDB的默認數(shù)據(jù)庫為"db",該數(shù)據(jù)庫存儲在data目錄中。
- MongoDB的單個實例可以容納多個獨立的數(shù)據(jù)庫,每一個都有自己的集合和權(quán)限厂榛,不同的數(shù)據(jù)庫也放置在不同的文件中。
- 數(shù)據(jù)庫名規(guī)則(滿足以下條件的任意UTF-8字符串)
- 不能是空字符串("")
- 不得含有' '(空格)、.匿情、$、/信殊、\和\0 (空字符)
- 應(yīng)全部小寫
- 最多64字節(jié)
有一些數(shù)據(jù)庫名是保留的炬称,可以直接訪問這些有特殊作用的數(shù)據(jù)庫
文檔(Document)
- 文檔是一組鍵值(key-value)對(即 BSON)。MongoDB 的文檔不需要設(shè)置相同的字段涡拘,并且相同的字段不需要相同的數(shù)據(jù)類型玲躯,這與關(guān)系型數(shù)據(jù)庫有很大的區(qū)別,也是 MongoDB 非常突出的特點鳄乏。
- 一個簡單的文檔例子如下:
{"site":"www.12306.com", "name":"搶不到票網(wǎng)站"}
- 注意:
- 文檔中的鍵/值對是有序的跷车。
- 文檔中的值不僅可以是在雙引號里面的字符串,還可以是其他幾種數(shù)據(jù)類型(甚至可以是整個嵌入的文檔)橱野。
- MongoDB區(qū)分類型和大小寫朽缴。
- MongoDB的文檔不能有重復(fù)的鍵。
- 文檔的鍵是字符串水援。除了少數(shù)例外情況密强,鍵可以使用任意UTF-8字符。
- 文檔鍵命名規(guī)范:
- 鍵不能含有\(zhòng)0 (空字符)蜗元。這個字符用來表示鍵的結(jié)尾或渤。
- .和$有特別的意義,只有在特定環(huán)境下才能使用奕扣。
- 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)薪鹦。
集合Collection
- 集合就是 MongoDB 文檔組,類似于 RDBMS (關(guān)系數(shù)據(jù)庫管理系統(tǒng):Relational Database Management System)中的表格惯豆。
- 集合存在于數(shù)據(jù)庫中池磁,集合沒有固定的結(jié)構(gòu),這意味著你在對集合可以插入不同格式和類型的數(shù)據(jù)楷兽,但通常情況下我們插入集合的數(shù)據(jù)都會有一定的關(guān)聯(lián)性框仔。
- 比如,我們可以將以下不同數(shù)據(jù)結(jié)構(gòu)的文檔插入到集合中:
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鳥教程","num":5}
- 當(dāng)?shù)谝粋€文檔插入時拄养,集合就會被創(chuàng)建离斩。
- 集合的命名規(guī)則
- 集合名不能是空字符串""银舱。
- 集合名不能含有\(zhòng)0字符(空字符),這個字符表示集合名的結(jié)尾跛梗。
- 集合名不能以"system."開頭寻馏,這是為系統(tǒng)集合保留的前綴。
- 用戶創(chuàng)建的集合名字不能含有保留字符核偿。有些驅(qū)動程序的確支持在集合名里面包含诚欠,這是因為某些系統(tǒng)生成的集合中包含該字符。除非你要訪問這種系統(tǒng)創(chuàng)建的集合漾岳,否則千萬不要在名字里出現(xiàn)$轰绵。
MongoDB 數(shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
String | 字符串。存儲數(shù)據(jù)常用的數(shù)據(jù)類型尼荆。在 MongoDB 中左腔,UTF-8 編碼的字符串才是合法的。 |
Integer | 整型數(shù)值捅儒。用于存儲數(shù)值液样。根據(jù)你所采用的服務(wù)器,可分為 32 位或 64 位巧还。 |
Boolean | 布爾值鞭莽。用于存儲布爾值(真/假)。 |
Double | 雙精度浮點值麸祷。用于存儲浮點值澎怒。 |
Min/Max keys | 將一個值與 BSON(二進制的 JSON)元素的最低值和最高值相對比。 |
Array | 用于將數(shù)組或列表或多個值存儲為一個鍵阶牍。 |
Timestamp | 時間戳丹拯。記錄文檔修改或添加的具體時間。 |
Object | 用于內(nèi)嵌文檔荸恕。 |
Null | 用于創(chuàng)建空值。 |
Symbol | 符號死相。該數(shù)據(jù)類型基本上等同于字符串類型融求,但不同的是,它一般用于采用特殊符號類型的語言算撮。 |
Date | 日期時間生宛。用 UNIX 時間格式來存儲當(dāng)前日期或時間。你可以指定自己的日期時間:創(chuàng)建 Date 對象肮柜,傳入年月日信息陷舅。 |
Object ID | 對象 ID。用于創(chuàng)建文檔的 ID审洞。 |
Binary Data | 二進制數(shù)據(jù)莱睁。用于存儲二進制數(shù)據(jù)待讳。 |
Code | 代碼類型。用于在文檔中存儲 JavaScript 代碼仰剿。 |
Regular expression | 正則表達式類型创淡。用于存儲正則表達式。 |
ObjectId類型
- ObjectId 類似唯一主鍵南吮,可以很快的去生成和排序琳彩,包含 12 bytes,含義是:
- 前 4 個字節(jié)表示創(chuàng)建 unix 時間戳,格林尼治時間 UTC 時間部凑,比北京時間晚了 8 個小時
- 接下來的 3 個字節(jié)是機器標識碼
- 緊接的兩個字節(jié)由進程 id 組成 PID
- 最后三個字節(jié)是隨機數(shù)
- MongoDB 中存儲的文檔必須有一個 _id 鍵露乏。這個鍵的值可以是任何類型的,默認是個 ObjectId 對象
- 由于 ObjectId 中保存了創(chuàng)建的時間戳涂邀,所以你不需要為你的文檔保存時間戳字段瘟仿,你可以通過 getTimestamp 函數(shù)來獲取文檔的創(chuàng)建時間:
> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")
- ObjectId 轉(zhuǎn)為字符串
> newObject.str
5a1919e63df83ce79df8b38f