改变Objectid的大小

时间:2013-04-07 17:23:07

标签: mongodb mongodb-.net-driver

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

有没有办法减少objectID的大小?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

  2. 自行管理集合的主键。许多驱动程序支持自定义primary key factories。正如@assylias所建议的那样,使用int将为您节省大量空间,但是,与使用模型中的某个字段_id相比,您将使用更多空间。

  3. 顺便说一句,_id字段的值可以是复合的:您可以使用Object / hash / map / dictionary。例如,请参阅this SO question

    如果你在Mongo上使用某种类型的对象/模型框架,我会小心(1)。有些框架很难与开发人员重写id生成。例如,我在Ruby中遇到过Mongoid的糟糕经历。在这种情况下,(2)可能是更安全的方式,因为生成发生在驱动程序层。