通过ObjectID获取MongoDB集合

问题描述:

MongoDB ID对于单个数据库集群是唯一的。是否有可能获得特定ObjectID的集合?通过ObjectID获取MongoDB集合

我有一个ObjectID的十六进制表示,需要知道具有此ID的文档的集合。可能吗?

我不确定您的使用案例,但如果您使用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

这是不是一个本地功能,但可以遍历所有集合(db.getCollectionNames())并调用find({_id: <yourid>})查询。显然这将是一个非常缓慢的操作,所以模式更改或使用ObjectId以外的其他值作为_id值可能是您前进的方向。