1 回答
TA贡献1831条经验 获得超10个赞
正如评论中已经提到的,将 ObjectId 存储为十六进制字符串会使它所需的空间加倍,如果您想提取其中一个值,您首先需要从该字符串构造一个 ObjectId。
但是你有一个误解。有绝对没有必要使用的ObjectId为强制性_id领域。很多时候,我建议不要这样做。这是为什么。
举一个简单的例子,一本书、关系和其他一些为了简单而搁置的考虑因素:
{
_id: ObjectId("56b0d36c23da2af0363abe37"),
isbn: "978-3453056657",
title: "Neuromancer",
author: "William Gibson",
language: "German"
}
现在,这里的 ObjectId 有什么用?其实没有。这将是一个几乎没有任何用处的索引,因为您永远不会通过这样的人工键来搜索您的图书数据库。它没有语义价值。对于已经具有全球唯一 ID(ISBN)的对象来说,这将是一个唯一 ID 。
所以我们像这样简化我们的书籍文档:
{
_id: "978-3453056657",
title: "Neuromancer",
author: "William Gibson",
language: "German"
}
我们减小了文档的大小,使用了预先存在的全局唯一 ID,并且没有基本上未使用的索引。
回到您的基本问题,您是否会因为不使用 ObjectId 而丢失某些东西:通常,不使用 ObjectId 是更好的选择。但是如果你使用它,请使用二进制形式。
- 1 回答
- 0 关注
- 185 浏览
添加回答
举报