摘要:使用文檔來存儲數(shù)據(jù)紀(jì)錄。是文檔的二進(jìn)制表示。文檔的局限性文件有以下屬性文檔大小限制文檔的最大值為。存儲的文檔的大小超過了最大值,提供。在版本之前,不會盡量維持原文檔中的字段順序。更新文檔更新文檔使用更新操作中指定字段去執(zhí)行指定數(shù)據(jù)的修改。
MongoDB使用BSON文檔來存儲數(shù)據(jù)紀(jì)錄。BSON是JSON文檔的二進(jìn)制表示。盡管它比JSON包含更多的數(shù)據(jù)類型。對于BSON規(guī)范,查看bsonspec.org,另請參見BSON類型。
文檔結(jié)構(gòu)MongoDB的文檔是由字段和值組成的,具有下列的結(jié)構(gòu):
{ field1: value1, field2: value2, field3: value3, ... fieldN: valueN }
一個字段的值可以是任何BSON數(shù)據(jù)類型。包含其他文檔、數(shù)組、和文檔數(shù)組。例如,以下文檔包含不同類型的值:
var mydoc = { _id: ObjectId("5099803df3f4948bd2f98391"), name: { first: "Alan", last: "Turing" }, birth: new Date("Jun 23, 1912"), death: new Date("Jun 07, 1954"), contribs: [ "Turing machine", "Turing test", "Turingery" ], views : NumberLong(1250000) }
上述字段具有下列數(shù)據(jù)類型:
_id 是一個 ObjectId 對象
name 是一個嵌入式文檔,包含first和last
birth和death包含數(shù)據(jù)類型的值
contribs 包含一個字符串?dāng)?shù)組
views包含 NumberLong 類型
字段名稱字段名稱是字符串。
文檔對于字段名具有以下限制:
字段名_id被保留用來作為主鍵,在集合中它的值必須是唯一的,是不可變的,可以是除數(shù)組外的任何類型
字段名稱不能為美元符號$開頭
字段名稱不能包含.字符
字段名稱不能包含null字符
BSON文檔可以有多個相同的字段名,大多數(shù) MongoDB接口,然而,表示一個結(jié)構(gòu)的MongoDB (即哈希表) 不支持重復(fù)的字段名稱,如果你需要操作多個相同字段名的文檔,請查閱你的驅(qū)動文檔。
一些通過內(nèi)部MongoDB進(jìn)程創(chuàng)建的文檔可能會包含重復(fù)的字段, 但是 MongoDB進(jìn)程將永遠(yuǎn)不會添加重復(fù)的字段到一個已存在的用戶文檔。
字段值限制對于已索引的集合,索引字段的值將會有一個最大索引Key的長度限制。查閱最大索引Key長度來獲取詳情。
點符號MongoDB使用點符號來訪問數(shù)組中的元素和內(nèi)嵌文檔的字段。
數(shù)組通過從0開始的數(shù)字下標(biāo)來指定或者訪問數(shù)組中的一個元素。用點符號來連接數(shù)組名稱和從0開始的數(shù)字下標(biāo),并用引號包括起來:
". "
例如,在一個文檔中給出以下字段:
{ ... contribs: [ "Turing machine", "Turing test", "Turingery" ], ... }
指定數(shù)組中contribs字段中的第三個元素,使用點符號contribs.2。
另請參閱:
當(dāng)更新時,使用$映射來操作符
當(dāng)數(shù)組的索引位置未知的時候,$可以映射為操作符
在數(shù)組中使用點符號查詢數(shù)組的例子
內(nèi)嵌文檔使用點符號指定或者訪問一個內(nèi)嵌文檔的字段,使用點符號來連接內(nèi)嵌文檔名稱和字段名稱,并用引號包括起來:
". "
例如,在一個文檔中給出以下字段:
{ ... name: { first: "Alan", last: "Turing" }, contact: { phone: { type: "cell", number: "111-222-3333" } }, ... }
指定name字段中的last字段,使用點符號:name.last,
指定contact字段中的phone字段中的number字段,使用點符號:contact.phone.number
另請查閱:
嵌入式文檔查詢 使用點符號查詢內(nèi)嵌文檔的例子。
文檔的局限性文件有以下屬性:
文檔大小限制BSON文檔的最大值為16M。
最大文檔的大小有助于確保一個文檔不能使用過多的RAM或者在傳輸?shù)倪^程中也會占用大量的帶寬。存儲的文檔的大小超過了最大值,MongoDB提供 GridFS API。參閱 mongofiles和你的驅(qū)動文檔關(guān)于GridFS的更多信息。
MongoDB會維持在寫入操作中文檔字段的順序,下列情況除外:
_id字段總是在文檔的第一個字段
包含字段名重命名的更新操作可能會導(dǎo)致文檔的字段重新排序
在2.6版本中改變:自2.6版本開始,MongoDB會盡量維持原文檔中的字段順序。在2.6版本之前,MongoDB不會盡量維持原文檔中的字段順序。
在MongoDB中,集合中保存文檔需要一個唯一的_id字段作為主鍵。如果_id字段在文檔中未指定,MongoDB會將 ObjectId作為_id字段的默認(rèn)值,即如果一個文檔在插入的時候在頂級字段中不包含_id,MongoDB驅(qū)動會增加一個帶有ObjectId的_id字段。
除此以外,如果Mongod接收一個不包含_id字段的文檔來插入(即通過一個更新操作來執(zhí)行upsert選項),Mongod將會增加一個帶有ObjectId的_id字段。
_id字段具有以下行為和約束:
默認(rèn)情況下,在一個集合創(chuàng)建的時候,MongoDB在_id上創(chuàng)建一個唯一索引。
_id總是在文檔的第一個字段。如果服務(wù)器接收到的文檔_id文檔不在最前面,那么服務(wù)器將會移動該字段到文檔的開始。
_id字段可能會包含除了數(shù)組之外的任何BSON數(shù)據(jù)類型
警告:為了保證復(fù)制功能,不要保存_id字段為BSON正則表達(dá)式類型的值。
下列是用來保存_id值的常見做法:
使用一個ObjectId
如果可以用的話,使用一個天然的唯一標(biāo)識符。這樣節(jié)省了空間和避免了額外索引。
生成一個自增數(shù)字
在你的程序中生成一個UUID。在集合中和_id字段中更高效的存儲UUID的值,存儲UUID的值使用BSON的BinDate類型
索引鍵屬于 BinData類型,可以更有效的在索引中存儲:
二進(jìn)制子類型值是在0-7或者128-135之間
字節(jié)數(shù)組的長度是:0,1,2,3,4,5,6,7,8,10,12,14,16,20,24或者32
使用你的驅(qū)動BSON UUID設(shè)施來生成UUID。請注意驅(qū)動程序可以實現(xiàn)UUID的不同邏輯的序列化和反序列化,這可能與其他的驅(qū)動程序并不能完全兼容。請查閱你的驅(qū)動文檔來獲取關(guān)于UUID的互操作性的更多信息。
文檔結(jié)構(gòu)的其他用戶注意:大多數(shù)MongoDB驅(qū)動客戶端將會在發(fā)送插入操作到MongoBD之前包含_id字段并生成一個ObjectId;然而,如果客戶端發(fā)送一個不包含_id字段的文檔,Mongod將會增加一個_id字段和生成一個ObjectId。
除了定義數(shù)據(jù)紀(jì)錄,MongoDB全部使用文檔結(jié)構(gòu),包含并不限于:查詢過濾器,更新指定文檔和索引指定文檔等。。。
查詢文檔篩選查詢文檔篩選指定條件來確定那些文檔可以執(zhí)行讀取,更新和刪除操作。
你可以使用
{: , : { : }, ... }
更多例子,請查看查詢過濾或者規(guī)范。
更新文檔:更新文檔使用db.collection.update()更新操作中指定字段去執(zhí)行指定數(shù)據(jù)的修改。
{: { : , ... }, : { : , ... }, ... }
更多例子,請查看更新規(guī)范。
索引文檔索引文檔定義字段索引和索引類型:
{其他資源: , : , ... }
文檔思考第一部分
下一章:https://segmentfault.com/a/11...
原文地址:https://docs.mongodb.com/manu...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/18886.html
摘要:類型數(shù)字別名注意已過時布爾日期正則表達(dá)式位整數(shù)時間戳位整數(shù)要確定字段的類型,請查看在中檢驗類型。是位整數(shù),代表自紀(jì)元年月日以來的毫秒數(shù)。 BSON是一個用來存儲文檔的二進(jìn)制序列化格式,并且可以在MongoDB中遠(yuǎn)程調(diào)用。該BSON規(guī)范位于bsonspce.org。 BSON在文檔中支持下列數(shù)據(jù)類型作為值。每個數(shù)據(jù)類型都有相對應(yīng)的數(shù)字和字符串別名用 $type 操作執(zhí)行BSON類型來查詢...
摘要:概述的社區(qū)版的編譯版本沒有為其它系統(tǒng)安裝社區(qū)版的支持包提供了一個簡單的選項注意建議不要使用這種辦法除非你有特定的需要可用的軟件包不能解決的時候安裝社區(qū)版提供了位和位已棄用的構(gòu)建的歸檔。選擇適合你的系統(tǒng)的安裝流程。 概述 Linux的MongoDB社區(qū)版的編譯版本沒有為其它 Linux 系統(tǒng)安裝MongoDB社區(qū)版的支持包提供了一個簡單的選項 注意: 建議不要使用這種辦法, 除非你有特...
摘要:概述使用本教程在系統(tǒng)上安裝社區(qū)版平臺支持自版本開始僅支持和更高版本的通過最流行的軟件包管理工具或者下載網(wǎng)站安裝的是可用的安裝社區(qū)版注意安裝以前的版本請參考那個版本的文檔例如參閱版本你可以使用或者手動安裝社區(qū)版這部分兩個方法都有介紹使用安裝 概述 使用本教程在 OS X 系統(tǒng)上安裝 MongoDB 社區(qū)版. 平臺支持: 自3.0版本開始, MongoDB 僅支持 OS X 10.7 (...
摘要:文檔數(shù)據(jù)庫在中,一條紀(jì)錄就是一個文檔,它是由字段和值對組成的數(shù)據(jù)結(jié)構(gòu)。尤其是在數(shù)據(jù)庫系統(tǒng)中,對于嵌入式數(shù)據(jù)模型的支持減少了活動。它提供自動故障轉(zhuǎn)移數(shù)據(jù)冗余副本集是一組服務(wù)器,保持相同的數(shù)據(jù)集,提供冗余和提高數(shù)據(jù)可用性的。 MongoDB 是一個提供了高性能、高可用、自動擴(kuò)展的開源的文檔數(shù)據(jù)庫。 文檔數(shù)據(jù)庫 在MongoDB中,一條紀(jì)錄就是一個文檔,它是由字段和值對組成的數(shù)據(jù)結(jié)構(gòu)。Mon...
摘要:例如,在集合中的數(shù)據(jù)紀(jì)錄在數(shù)據(jù)庫中的集合。因此,你可以切換到一個不存在的數(shù)據(jù)庫,并且在中執(zhí)行以下操作如果它們不存在的時候,創(chuàng)建了數(shù)據(jù)庫和集合。限制數(shù)據(jù)庫名字的列表,請參閱命名限制。集合在集合中存儲文檔。集合是類似關(guān)系數(shù)據(jù)庫的表。 MongoDB 存儲BSON文檔。例如,在集合中的數(shù)據(jù)紀(jì)錄;在數(shù)據(jù)庫中的集合。showImg(https://segmentfault.com/img/bVC...
閱讀 3146·2021-11-08 13:18
閱讀 2287·2019-08-30 15:55
閱讀 3609·2019-08-30 15:44
閱讀 3072·2019-08-30 13:07
閱讀 2784·2019-08-29 17:20
閱讀 1951·2019-08-29 13:03
閱讀 3413·2019-08-26 10:32
閱讀 3229·2019-08-26 10:15