前面的幾章中都涉及到了 MongoDB 的對(duì)象 id。本章將介紹 ObjectId 的結(jié)構(gòu)。
ObjectId 是一個(gè) 12 字節(jié)的 BSON 類型,其結(jié)構(gòu)如下:
MongoDB 使用 ObjectId 作為每一文檔的 _id 字段的默認(rèn)值(在創(chuàng)建文檔時(shí)產(chǎn)生)。ObjectId 的復(fù)雜組合保證了 _id 字段的唯一性。
使用下列代碼創(chuàng)建新的 ObjectId:
>newObjectId = ObjectId()
上述代碼返回一個(gè)唯一的 id:
ObjectId("5349b4ddd2781d08c09890f3")
如果不用 MongoDB 來(lái)生成,可以自己提供一個(gè) 12 字節(jié)的 id:
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
因?yàn)?_id ObjectId 默認(rèn)保存 4 字節(jié)的時(shí)間戳,所以在大多數(shù)情況下不需要保存文檔的創(chuàng)建時(shí)間。使用 getTimestamp
方法可獲取文檔的創(chuàng)建時(shí)間。
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
返回標(biāo)準(zhǔn)時(shí)期格式表示的文檔創(chuàng)建時(shí)間:
ISODate("2014-04-12T21:49:17Z")
在某些情況下,你需要用字符串格式表示 ObjectId 值,使用如下命令可實(shí)現(xiàn)這一點(diǎn):
>newObjectId.str
上述代碼以 GUID 格式返回字符串。
5349b4ddd2781d08c09890f3