2

在 MongoDb 中,ObjectId 是一个 12 字节的 BSON 类型。

有什么办法可以减小objectID的大小吗?

4

2 回答 2

2

不,它是 BSON 数据类型。这就像要求一个 32 位整数收缩自身。每个对象都必须具有_id属性,但您不限于ObjectId.

于 2013-04-07T17:33:37.557 回答
0

MongoDB 集合中的每个文档都需要具有唯一性_id,但值不必是ObjectId. 因此,如果您希望减少集合中文档的大小,您有两种选择:

  1. 选择文档的独特属性之一并将其用作_id字段。例如,如果您有一个帐户集合,其中帐户 ID(外部提供)是您的数据模型的一部分,您可以将帐户 ID 存储在_id字段中。

  2. 自己管理集合的主键。许多驱动程序支持自定义主键工厂。正如@assylias 所建议的那样,使用 int 可以节省大量空间,但是,与将模型中的某个字段用作_id.

顺便说一句,_id字段的值可以是复合的:您可以使用 Object/hash/map/dictionary。例如,参见这个 SO question

如果您在 Mongo 之上使用某种类型的对象/模型框架,我会小心 (1)。有些框架很难让开发人员覆盖 id 生成。例如,我在 Ruby 中使用 Mongoid 的体验很糟糕。在这种情况下,(2) 可能是更安全的方法,因为生成发生在驱动程序层。

于 2013-04-08T02:21:45.637 回答