2012-02-01 61 views
2

MongoDB ID對於單個數據庫集羣是唯一的。是否有可能獲得特定ObjectID的集合?通過ObjectID獲取MongoDB集合

我有一個ObjectID的十六進制表示,需要知道具有此ID的文檔的集合。可能嗎?

回答

1

我不確定您的使用案例,但如果您使用ObjectID爲_id,簡短答案是否定的。

甲BSON的ObjectID是由一個4字節的時間戳的一個12字節的值(自紀元秒),3字節的機器id,一個2字節的進程ID,和一個3字節計數器[1 ]

或者圖解:

|0 1 2 3 | 4 5 6 | 7 8 | 9 10 11 | 
| time | machine | pid | inc | 

所以有儲存在那裏沒有收集信息。

然而,可以使用任何價值_id所以你可以使用自己的約定,如果需要,這就是它可以存儲收集的信息......

[1] http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype

3

這是不是一個本地功能,但可以遍歷所有集合(db.getCollectionNames())並調用find({_id: <yourid>})查詢。顯然這將是一個非常緩慢的操作,所以模式更改或使用ObjectId以外的其他值作爲_id值可能是您前進的方向。