objectid構成
之前我們使用mysql等關係型資料庫時,主鍵都是設定成自增的。但在分布式環境下,這種方法就不可行了,會產生衝突。為此,mongodb採用了乙個稱之為objectid的型別來做主鍵。objectid是乙個12位元組的 bson型別字串。按照位元組順序,依次代表:
objectid獲取時間
從objectid的構造上來看,內部就嵌入了時間型別。我們肯定可以從中獲取時間資訊:即插入此文件時的時間。mongodb對objectid物件提供了gettimestamp()方法來獲取objectid的時間。
> a = new objectid()根據時間構造objectidobjectid("53102b43bf1044ed8b0ba36b")
> a.gettimestamp()
isodate("2014-02-28t06:22:59z")
上例是直接使用mongodb提供的新建方法來構造objectid的,我們自己可不可以通過字串來構造呢?看下例:
// 使用date的字串構造方法生成日期上述過程中 new array(17).join(「0″)目的是生成16個0拼接的字串。// 然後使用date物件的gettime獲取毫秒數,再除以1000得到標準時間戳
> a = new date("2012-12-12 00:00:00").gettime()/1000
1355241600
// 獲取時間戳的標準十六進製制表示
> a = a.tostring(16)
50c75880
// 在後面填補16個0
> a = a + new array(17).join("0")
50c758800000000000000000
// 使用24個字串構造objectid
> b = new objectid(a)
objectid("50c758800000000000000000")
// 獲取時間以驗證
> b.gettimestamp()
isodate("2012-12-11t16:00:00z")
這裡使用了點小技巧。new array(17)構造了乙個17個元素的陣列,但是陣列裡面沒有元素,join(atr)方法的作用是連線陣列元素並且以其引數分割。17個元素正好有16個間隔,所以最終拼接起來的字串為16個。
根據objectid按照插入時間排序
mongodb預設在objectid上建立索引,是按照插入時間排序的。我們可以使用此索引進行查詢和排序。
// 按序插入三個文件> db.col.insert()
> db.col.insert()
> db.col.insert()
> db.col.find().pretty()
// 按照_id公升序,即按照插入時間公升序
> db.col.find().sort().pretty()
// 按照_id降序,即按照插入時間降序
> db.col.find().sort().pretty()
// 抽取num = 2的objectid用來過濾
> num2 = objectid("53102fb9bf1044ed8b0ba36d")
objectid("53102fb9bf1044ed8b0ba36d")
// 找出插入時間在num2之後的資料
> db.col.find(}).pretty()
----------------------
python 獲取objectid (2.2版本以上)
from bson.objecti import objectid
idstr = '...........'
id = objectid('idstr')
MongoDB ObjectId詳解及使用
mongodb中我們經常會接觸到乙個自動生成的字段 id 型別為objectid。本文詳解objectid的構成和使用。之前我們使用mysql等關係型資料庫時,主鍵都是設定成自增的。但在分布式環境下,這種方法就不可行了,會產生衝突。為此,mongodb採用了乙個稱之為objectid的型別來做主鍵。...
MongoDB ObjectId詳解及使用
mongodb中我們經常會接觸到乙個自動生成的字段 id 型別為objectid。本文會詳解objectid的構成和使用。objectid構成 之前我們使用mysql等關係型資料庫時,主鍵都是設定成自增的。但在分布式環境下,這種方法就不可行了,會產生衝突。為此,mongodb採用了乙個稱之為obje...
showModalDialog引數詳解 使用方法
基本介紹 showmodaldialog ie 4 支援 showmodelessdialog ie 5 支援 window.showmodaldialog 方法用來建立乙個顯示html內容的模態對話方塊。window.showmodelessdialog 方法用來建立乙個顯示html內容的非模態對...