通过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值可能是您前进的方向。