是否可以单独使用对象ID在mongodb中找到文档(不知道哪个集合)?

时间:2013-10-15 09:46:16

标签: mongodb

在MongoDB中,对象ID很可能在集合中是唯一的。

因此可以单独使用对象ID查询Mongo数据库中的文档, 不知道它是什么集合?

由于

1 个答案:

答案 0 :(得分:4)

当你和@Sammaye在评论中说明时,ObjectID可能是唯一的,因为(取自mongodb site

ObjectId is a 12-byte BSON type, constructed using:

a 4-byte value representing the seconds since the Unix epoch,
a 3-byte machine identifier,
a 2-byte process id, and
a 3-byte counter, starting with a random value.

所以它几乎不可能是相同的。 (我似乎无法找到所有集合中的3字节计数器是否相同,或者每个集合中是否有不同的计数器)

为简单起见,我们假设ObjectID对于数据库中的每条记录都是唯一的。

没有“一个查询”会在整个数据库中搜索记录。 Mongodb没有默认的方式来实现你的要求。

对于非平凡的解决方案,请参阅this question


评论后更新

如果您不想多次查询数据库,可以

  • 在数据库中查询所有集合名称。
  • 遍历所有集合名称,并使用每个名称查询该唯一ObjectID的每个集合
  • 如果集合返回一个对象,则会中断循环并返回该对象

(这只是描述如何做到这一点,因为你没有说明你用的是什么编程语言给你一个例子)