【发布时间】:2018-05-29 12:57:07
【问题描述】:
我希望为 mongo 数组中的对象添加一个 _id 作为属性。
这是一个好习惯吗? 索引有什么问题吗?
【问题讨论】:
-
这个问题有点含糊。你能提供更多细节吗?
-
我不认为该链接与这个问题有任何关系。
标签: mongodb
我希望为 mongo 数组中的对象添加一个 _id 作为属性。
这是一个好习惯吗? 索引有什么问题吗?
【问题讨论】:
标签: mongodb
我希望为 mongo 数组中的对象添加一个 _id 作为属性。
我假设:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
此问题的结构类型。
这是好的做法吗?
不正常。 _ids 是实体的唯一标识符。因此,如果您希望在子文档对象中添加 _id,那么您可能没有很好地规范化您的数据,这可能表明您的架构设计存在根本缺陷。
子文档旨在包含该文档的重复数据,即地址或用户等。
话虽这么说_id 添加并不总是一件坏事。以我刚才提到的地址为例。假设您有一个购物车系统,并且(出于某种原因)您没有将地址复制到订单文档,然后您将使用 _id 或其他标识符来获取该子文档。
您还必须考虑链接文档。如果 _id 描述了另一个文档,并且属性是该文档与该链接文档相关的自定义属性,那也没关系。
索引有什么问题吗?
ObjectId 仍然相当大,因此对于较小、不那么唯一的 id 或根本不将 _id 用于子文档,需要考虑这一点。
对于索引,它与文档本身的标准 _id 字段并没有什么不同,并且跨字段的唯一索引应该在整个集合中起作用(取决于场景,测试您的查询)。
注意:MongoDB 不会为您将_id 添加到子文档中。
【讨论】:
_id。