默认情况下,_id
字段生成为new ObjectId()
,其中包含96位(12字节)。
_id
大小会影响收集效果吗?如果我使用128位(160位或256位)字符串而不是本地ObjectId
怎么办?
答案 0 :(得分:2)
在查询性能方面,它不太重要。 _id上的索引是一个实现为二叉树的排序索引,因此值的实际长度并不重要。
使用较长的字符串作为_id当然会使您的文档更大。较大的文档意味着较少的文档将缓存在RAM中,这将导致较大的数据库性能较差。但是当该字符串是文档的一部分时,将它们用作_id会节省空间,因为你不再需要一个额外的_id。
答案 1 :(得分:1)
默认情况下,_id
字段已编入索引(主键),如果您倾向于为其使用自定义值集(例如字符串),则事实上它将消耗更多空间。它不会对您的查询性能产生任何重大影响。索引大小几乎不会影响查询性能。您可以使用示例代码验证这一点。