• <menu id="w2i4a"></menu>
  • logo Navicat使用教程-2019.1

    文檔首頁(yè)>>Navicat使用教程-2019.1>>Navicat使用教程:關(guān)于MongoDB的_id字段

    Navicat使用教程:關(guān)于MongoDB的_id字段


    Navicat Premium是一個(gè)數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,可讓您從單個(gè)應(yīng)用程序同時(shí)連接到MySQL,MariaDB,MongoDB,SQL Server,Oracle,PostgreSQL和SQLite數(shù)據(jù)庫(kù)。與Amazon RDS,Amazon Aurora,Amazon Redshift,Microsoft Azure,Oracle Cloud,Google Cloud和MongoDB Atlas等云數(shù)據(jù)庫(kù)兼容。

    在線訂購(gòu)  試用下載

    在MongoDB數(shù)據(jù)庫(kù)中打開(kāi)任何文檔,您會(huì)注意到_id字段:

    Navicat使用教程:關(guān)于MongoDB的_id字段

    實(shí)際上,ObjectId / _id是每個(gè)MongoDB文檔中唯一的字段。在今天的文章中,我們將探討它的含義以及它對(duì)MongoDB數(shù)據(jù)庫(kù)的重要性。

    ObjectId的結(jié)構(gòu)

    作為一個(gè)快速、開(kāi)發(fā)的總結(jié),以下是_id的一些主要特征:

    • _id是集合中文檔的主鍵;有了它,文檔(記錄)可以彼此區(qū)分。

    • _id自動(dòng)索引。指定{_id:

    • 默認(rèn)情況下,_id字段的類型為ObjectID,是MongoDB的BSON類型之一。如果需要,用戶還可以將_id覆蓋為ObjectID以外的其他值。

    ObjectID的長(zhǎng)度為12個(gè)字節(jié),由2-4個(gè)字節(jié)的鏈組成。每個(gè)鏈代表并指定文檔標(biāo)識(shí)的特定方面。以下值組成完整的12個(gè)字節(jié)的組合:

    • 一個(gè)4字節(jié)的值,表示自Unix時(shí)代以來(lái)的秒數(shù)

    • 一個(gè)3字節(jié)的機(jī)器標(biāo)識(shí)符

    • 一個(gè)2字節(jié)的進(jìn)程ID

    • 以隨機(jī)值開(kāi)頭的3字節(jié)計(jì)數(shù)器

    Navicat使用教程:關(guān)于MongoDB的_id字段

    通常,您不必?fù)?dān)心生成ObjectID。如果未為文檔分配_id值,MongoDB將自動(dòng)生成一個(gè)。

    創(chuàng)建新的ObjectId

    如果要自己生成一個(gè)新的ObjectId,則可以使用以下代碼:

    newObjectId = ObjectId()

    您也可以直接在Navicat編輯器中鍵入它。

    這將生成一個(gè)唯一的_id,例如:

    ObjectId(“ 5349b4ddd2781d08c09890f3”)

    或者,您可以提供一個(gè)12字節(jié)的ID:

    myObjectId = ObjectId(“ 5349b4ddd2781d08c09890f4”)

    創(chuàng)建文檔的時(shí)間戳

    由于_id ObjectId默認(rèn)情況下存儲(chǔ)4字節(jié)的時(shí)間戳,因此在大多數(shù)情況下,您不需要存儲(chǔ)任何文檔的創(chuàng)建時(shí)間。您可以使用getTimestamp方法獲取文檔的創(chuàng)建時(shí)間:

    ObjectId(“ 5349b4ddd2781d08c09890f4”)。getTimestamp()

    這將以ISO日期格式返回此文檔的創(chuàng)建時(shí)間

    ISODate(“ 2019-09-12T30:39:17Z”)

    將ObjectId轉(zhuǎn)換為String

    在某些情況下,您可能需要字符串格式的ObjectId值。若要將ObjectId轉(zhuǎn)換為字符串,請(qǐng)使用以下代碼:

    newObjectId.str

    上面的代碼將返回Guid的字符串格式:

    5349b4ddd2781d08c09890f3

    文檔分類

    由于每個(gè)ObjectId都包含一個(gè)時(shí)間戳,因此您可以按_id對(duì)文檔進(jìn)行排序,也可以按創(chuàng)建時(shí)間對(duì)文檔進(jìn)行排序。但是,請(qǐng)務(wù)必注意,此排序方法并不代表嚴(yán)格或精確的排序,因?yàn)镮D的其他組件可能會(huì)起作用,導(dǎo)致該命令反映的不僅僅是創(chuàng)建時(shí)間,還反映了其他變量。

    更改ObjectId

    _id字段基本上是不可變的,因此,在創(chuàng)建文檔后,根據(jù)定義,它已分配了_id,該ID不能更改。話雖如此,插入新文檔時(shí)_id可以被覆蓋。覆蓋文檔的_id字段可能很有用,但是這樣做時(shí),您有責(zé)任確保每個(gè)文檔的值都是唯一的。

    結(jié)論

    MongoDB的_id字段在每個(gè)MongoDB集合中都起著至關(guān)重要的作用。因此,了解如何創(chuàng)建以及何時(shí)覆蓋它對(duì)于管理集合非常有用。您可以下載Navicat Premium試用版評(píng)估一下~

    相關(guān)內(nèi)容推薦:

    Navicat使用教程>>>


    想要購(gòu)買(mǎi)產(chǎn)品正版授權(quán)請(qǐng)點(diǎn)擊“在線訂購(gòu)”,或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”

    04-850x68.png

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();