使用MongoDB文檔中的字段ID或_ID有什麼區別?MongoDB中「id」和「_id」字段之間的區別
我問這個,因爲我通常用 「_id」,但是我看到了這種({ID:-1})的文件中:http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
編輯
原來的文檔錯了。
使用MongoDB文檔中的字段ID或_ID有什麼區別?MongoDB中「id」和「_id」字段之間的區別
我問這個,因爲我通常用 「_id」,但是我看到了這種({ID:-1})的文件中:http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
編輯
原來的文檔錯了。
我希望這只是文檔中的一個錯字。 _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的其餘部分。
_id
字段是Bson ObjectId的默認字段,它默認情況下是索引的。
_id
和id不一樣。如果需要,您也可以選擇添加一個名爲id
的字段,但除非添加索引,否則它不會成爲索引。
這只是文檔中的拼寫錯誤。
id是mongoid.id中_id的別名,將返回文檔的_id。 https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
如果未指定_id字段,則會自動生成ObjectedId。
我的兩個美分:
MongoDB
一個_id
字段分配給每個文件並在其上分配主索引。我們也可以應用二級索引。默認情況下,MongoDB
爲類型ObjectID
的_id
字段創建值。此值在BSON
規範中定義和它的結構化的這種方式:
的ObjectID(12個字節十六進制字符串)=日期(4個字節,代表的自Unix紀元秒數時間戳值)+ MAC地址(3個字節)+ PID(2字節)+計數器(3字節)
是集合中每個文檔的'_id'強制嗎?換句話說,我可以創建一個沒有'_id'字段的新文檔嗎? – 2013-09-20 18:57:21
@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