Mongodb中 Documents文檔說明

來源:互聯網
上載者:User

標籤:query   driver   名稱   索引   文檔   length   通過   傳輸過程   索引類型   

mongodb使用BSON格式儲存資料記錄. 如:

文檔結構

文檔有索引值對組成, 有以下結構:

{
    field1: value1,
    field2: value2,
    ...
    fieldN: valueN
}?

欄位的值可以是任意BSON 資料類型,包括其他文檔, 數組和文檔數組.

例如,以下文檔包含不同類型的值:

{
     _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)
}?

解析:

  • _id 是 ObjectId類型.
  • name 值是一個嵌入的文檔,包含欄位 first and last.
  • birth and death hold values of the Date type.
  • contribs holds an array of strings.
  • views holds a value of the NumberLong type.
Field Names

欄位名是String類型

文檔在欄位名上有以下限制:

  • 欄位名稱 _id保留用作主鍵; 它的值在集合中必須是唯一的,是不可變的,並且可以是除數組以外的任何類型。
  • 不能以$ 開頭
  • 不能包含 點(.) 字元
  • 不能包含Null 字元

有時候bson 文檔可能有多個欄位使用同一個名字.這種情況,參考:driver documentation .

Field Value 限制

對於索引集合,索引欄位的值具有最大索引鍵長度限制。 有關詳細資料, SeeMaximum Index Key Length 。

點符號

MongoDB使用點符號來訪問數組的元素並訪問嵌入文檔的欄位。

Arrays

要通過基於零的索引位置指定或訪問數組的元素,請將數組名稱與點(.)和從零開始的索引位置串連起來,並用引號引起來:

"<array>.<index>"?

{
    ...
    contribs: [ "Turing machine", "Turing test", "Turingery" ],
    ...
}?

要訪問第三個字元:"contribs.2".

For examples querying arrays, see:

  • Query an Array
  • Query an Array of Embedded Documents
嵌入的文檔

要使用點符號指定或訪問嵌入式文檔的欄位,使用以下格式: 嵌入文檔名稱.欄位名:

"<embedded document>.<field>"?

{
...
name: { first: "Alan", last: "Turing" },
contact: { phone: { type: "cell", number: "111-222-3333" } },
...
}

上邊的 name, contact,以及嵌入在contact裡邊的phone都是嵌入式文檔.

指定name欄位中的last : "name.last".

在contact 中指定phone的號碼: "contact.phone.number".

For examples querying embedded documents, see:

  • Query on Embedded/Nested Documents
  • Query an Array of Embedded Documents
文檔的局限性

Documents有以下屬性:

Document Size Limit

bson文檔的最大值是16M.

最大的文檔大小有助於確保單個文檔不能使用過多的RAM,或者在傳輸過程中使用過多的頻寬。 為了儲存大於最大大小的文檔,MongoDB提供了GridFS API。 有關GridFS的更多資訊,請參閱mongofiles和驅動程式的文檔。

Document Field Order

除以下情況外,MongoDB保留寫入操作之後的文檔欄位的順序:

  • The _id 永遠是文檔的第一個欄位
  • renaming 欄位名可能會導致欄位重排序.
The  _id Field

在MongoDB中,儲存在集合中的每個文檔都需要一個唯一的_id欄位作為主鍵。 如果插入的文檔省略_id欄位,則MongoDB驅動程式自動為_id欄位產生一個ObjectId。

_id欄位有以下行為和約束:

  • 預設情況下,MongoDB在建立集合時在_id欄位上建立一個唯一的索引。
  • _id欄位總是文檔中的第一個欄位。 如果伺服器收到一個沒有_id欄位的文檔,那麼伺服器將把欄位移到開頭。
  • _id欄位可能包含任何BSON資料類型的值,除了數組。

_id值的常用選項:

  • 使用 ObjectId
  • 使用自然唯一識別碼(如果可用)。 這節省了空間並避免了額外的索引。
  • 使用自增長的數字
  • 使用UUID
文檔結構的其他用途

除了定義資料記錄之外,MongoDB還一直使用文檔結構,包括但不限於:query filters, update specifications documents, and index specification documents.

查詢文檔

查詢過濾器指定紀錄被選中的條件.

你可以使用<field>:<value> 運算式指定相等條件和查詢運算子運算式。

{
    <field1>: <value1>,
    <field2>: { <operator>: <value> },
    ...
}?

For examples, see:

  • Query Documents
  • Query on Embedded/Nested Documents
  • Query an Array
  • Query an Array of Embedded Documents

舉一個Query Documents的例子:

db.inventory.find( { status: "D" } )?

inventory 集合中找出status = "D"的記錄. 與sql 中的語句一致:

       SELECT * FROM inventory WHERE status = "D"?

查詢過濾器文檔可以使用查詢運算子來指定以下形式的條件:

{ <field1>: { <operator1>: <value1> }, ... }?

下邊的例子展示從inventory  集合中檢索 status等於"A"或"D"的記錄.

db.inventory.find( { status: { $in: [ "A", "D" ] } } )?

這個語句與下邊sql的語句一致:

        SELECT * FROM inventory WHERE status in ("A", "D")?

還有and 和or 的用法,想看的看這個文檔Query Documents.

更新指定的文檔

更新文檔使用update operators 來指定在db.collection.update() 操作期間在指定欄位上執行的資料修改。

{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}?

For examples, see Update specifications.

索引規範文檔

索引規範文檔定義欄位索引和索引類型:

{ <field1>: <type1>, <field2>: <type2>, ... }?

翻譯自官網: https://docs.mongodb.com/manual/core/document/ 

 

轉寄註明出處: http://www.cnblogs.com/jycboy/p/8718320.html

 

Mongodb中 Documents文檔說明

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.