我希望在Mongo数组的对象中添加一个_id属性。
这样做是否是良好的实践? 是否存在索引相关的问题?
我希望在Mongo数组的对象中添加一个_id属性。
这样做是否是良好的实践? 是否存在索引相关的问题?
我希望在mongo数组中为对象添加一个_id属性。
我猜想:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
这是一个关于问题结构的类型。
这是一个好的实践方法吗?
通常不是。 _id
是实体的唯一标识符。因此,如果您要在子文档对象中添加 _id
,则可能没有很好地规范化数据,这可能是模式设计中基本缺陷的迹象。
子文档旨在包含该文档的重复数据,例如用户的地址或其他信息。
话虽如此,添加 _id
并不总是一件坏事情。以我刚才提到的地址为例。想象一下,如果您要拥有一个购物车系统,并且(由于某种原因)您没有将地址复制到订单文档中,那么您将使用一个 _id
或其他标识符来获取该子文档。
此外,您还必须考虑链接文档。如果该 _id
描述了另一个文档,并且属性是与该链接文档相关的自定义属性,则也可以使用。
索引有问题吗?
ObjectId
仍然相当大,所以在考虑使用较小、不太唯一的 id 或根本不使用 _id
作为子文档时,这是需要考虑的问题。
对于索引,它与文档本身上的标准 _id
字段没有什么不同,字段上的唯一索引应该适用于整个集合(具体情况取决于场景,请测试您的查询)。
注意:MongoDB 不会为子文档添加 _id
。
_id
。 - deb