首页 > 解决方案 > NoSQL/MongoDB:我什么时候需要嵌套对象中的 _id?

问题描述

当 _id 字段引用简单的嵌套对象时,我不明白它的用途,例如,它不用作专用集合中的根实体。

假设我们有一个简单的值对象,例如Money({currency: String, amount: Number }). 显然,您永远不会将这样的值对象本身存储在专用集合中。它宁愿附加到交易或产品上,它们将有自己的集合。

但是您仍然可以查询高于/低于给定值的特定货币或金额。您可能会以编程方式(不是在数据库级别)将交易的价值设置为与购买的产品相同。

在这种情况下你需要一个 _id 吗?在什么情况下,嵌套对象需要 _id?

标签: mongodbnosql

解决方案


假设您要询问的 _id 是ObjectId,则此类字段的唯一目的是唯一标识一个对象。集合中的文档或数组中的子文档。

从你的钱箱的描述来看,你的价值对象似乎没有必要有这样的 _id 字段。一个有效的用例可能是一组非唯一/不可识别的子文档,例如日志条目、加密数据等。

ODM 可能会默认添加此类字段,以便以统一的方式处理子文档,而不管应用程序需要。


推荐阅读