Mongo _id 生成和使用

MongoDB中咱們常常會接觸到一個自動生成的字段:」_id」,類型爲ObjectId。sql

ObjectId構成數據庫

以前咱們使用MySQL等關係型數據庫時,主鍵都是設置成自增的。但在分佈式環境下,這種方法就不可行了,會產生衝突。爲此,MongoDB採用了一個稱之爲ObjectId的類型來作主鍵。ObjectId是一個12字節的BSON類型字符串。按照字節順序,一次表明:分佈式

  • 4字節:UNIX時間戳
  • 3字節:表示運行MongoDB的機器
  • 2字節:表示生成此_id的進程
  • 3字節:由一個隨機數開始的計數器生成的值

ObjectId獲取時間code

從ObjectId的構造上來看,內部就嵌入了時間類型。咱們確定能夠從中獲取時間信息:即插入此文檔時的時間。MongoDB對ObjectId對象提供了getTimestamp()方法來獲取ObjectId的時間。對象

> a = new ObjectId()
ObjectId("53102b43bf1044ed8b0ba36b")
> a.getTimestamp()
ISODate("2014-02-28T06:22:59Z")

根據ObjectId按照插入時間排序排序

MongoDB默認在ObjectId上創建索引,是按照插入時間排序的。咱們能夠使用此索引進行查詢和排序。索引

相關文章
相關標籤/搜索