5

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

那么是否可以单独使用对象 ID 在 Mongo 数据库中查询文档,而不知道它在哪个集合中?

谢谢

4

1 回答 1

4

正如您和@Sammaye 在评论中所说,ObjectID 可能是唯一的,因为(取自mongodb 站点

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 没有默认方法来实现您的要求。

对于一个重要的解决方案,请参阅这个问题


评论后更新

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

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

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

于 2013-10-15T10:02:53.240 回答