2012-03-14 36 views

回答

43

我希望這只是文檔中的一個錯字。 _id字段是每個文檔的主鍵。它叫做_id,也可以通過id訪問。嘗試使用密鑰id可能會導致illegal ObjectId format錯誤。

該部分僅表明自動生成的ObjectID以時間戳開頭,因此可以自動對文檔進行排序。這非常酷,因爲_id會在每個集合中自動編入索引。有關更多信息,請參閱http://www.mongodb.org/display/DOCS/Object+IDs。具體在「BSON ObjectID規範」下。

甲BSON的ObjectID是由一個4字節的時間戳(自紀元秒),3字節的機器id,一個2字節的進程ID,和一個3字節計數器12字節值。請注意,時間戳和計數器字段必須存儲爲大端,而不像BSON的其餘部分。

+6

是集合中每個文檔的'_id'強制嗎?換句話說,我可以創建一個沒有'_id'字段的新文檔嗎? – 2013-09-20 18:57:21

+2

@KevinMeredith按照[here](https://docs.mongodb.com/manual/reference/bson-types/#objectid)的規定,是的,'_id'字段是強制性的。«在MongoDB中,存儲在集合中的每個文檔都需要一個唯一的'_id'字段來充當主鍵。如果插入的文檔省略'_id'字段,則MongoDB驅動程序自動爲'_id'字段»生成一個'ObjectId'。 – BowPark 2017-06-01 09:30:22

10

_id字段是Bson ObjectId的默認字段,它默認情況下是索引的。

_id和id不一樣。如果需要,您也可以選擇添加一個名爲id的字段,但除非添加索引,否則它不會成爲索引。

這只是文檔中的拼寫錯誤。

0

我的兩個美分:

的_id字段

MongoDB一個_id字段分配給每個文件並在其上分配主索引。我們也可以應用二級索引。默認情況下,MongoDB爲類型ObjectID_id字段創建值。此值在BSON規範中定義和它的結構化的這種方式:

的ObjectID(12個字節十六進制字符串)=日期(4個字節,代表的自Unix紀元秒數時間戳值)+ MAC地址(3個字節)+ PID(2字節)+計數器(3字節)

相關問題