在MongoDb中,ObjectId是一个12字节的BSON类型。
有没有办法减少objectID的大小?
答案 0 :(得分:2)
没有。它是BSON数据类型。这就像要求一个32位整数缩小自己。
每个对象都必须包含 _id 属性,但您不限于ObjectId
。
答案 1 :(得分:0)
MongoDB集合中的每个文档都需要具有唯一的_id
,但该值不必是ObjectId
。因此,如果您希望减少集合中文档的大小,您有两种选择:
选择文档的一个独特属性,并将其用作_id
字段。例如,如果您有一个帐户集合,其帐户ID(在外部提供)是您的数据模型的一部分,则可以将帐户ID存储在_id
字段中。
自行管理集合的主键。许多驱动程序支持自定义primary key factories。正如@assylias所建议的那样,使用int将为您节省大量空间,但是,与使用模型中的某个字段_id
相比,您将使用更多空间。
顺便说一句,_id
字段的值可以是复合的:您可以使用Object / hash / map / dictionary。例如,请参阅this SO question。
如果你在Mongo上使用某种类型的对象/模型框架,我会小心(1)。有些框架很难与开发人员重写id生成。例如,我在Ruby中遇到过Mongoid的糟糕经历。在这种情况下,(2)可能是更安全的方式,因为生成发生在驱动程序层。