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