MongoDB的_id字段含義,及對MongoDB數(shù)據(jù)庫的重-創(chuàng)新互聯(lián)

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

主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站設(shè)計(jì)、程序開發(fā)、微網(wǎng)站、成都小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。

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

MongoDB的_id字段含義,及對MongoDB數(shù)據(jù)庫的重

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

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

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

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

  • _id自動索引。指定{_id:

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

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

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

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

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

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

MongoDB的_id字段含義,及對MongoDB數(shù)據(jù)庫的重

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

創(chuàng)建新的ObjectId

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

newObjectId?=?ObjectId()

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

這將生成一個唯一的_id,例如:

ObjectId(“?5349b4ddd2781d08c09890f3”)

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

myObjectId?=?ObjectId(“?5349b4ddd2781d08c09890f4”)

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

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

ObjectId(“?5349b4ddd2781d08c09890f4”)。getTimestamp()

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

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

將ObjectId轉(zhuǎn)換為String

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

newObjectId.str

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

5349b4ddd2781d08c09890f3

文檔分類

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

更改ObjectId

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

結(jié)論

MongoDB的_id字段在每個MongoDB集合中都起著至關(guān)重要的作用。因此,了解如何創(chuàng)建以及何時覆蓋它對于管理集合非常有用。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:MongoDB的_id字段含義,及對MongoDB數(shù)據(jù)庫的重-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://muchs.cn/article28/dposjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站收錄、品牌網(wǎng)站制作網(wǎng)站制作、網(wǎng)站改版用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)