【发布时间】:2016-05-26 03:44:00
【问题描述】:
在下面的博客中有例子:
http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1
一个产品可能有很多部件
db.parts.findOne()
{
_id : ObjectID('AAAA'),
partno : '123-aff-456',
name : '#4 grommet',
qty: 94,
cost: 0.94,
price: 3.99
}
db.products.findOne()
{
name : 'left-handed smoke shifter',
manufacturer : 'Acme Corp',
catalog_number: 1234,
parts : [ // array of references to Part documents
ObjectID('AAAA'), // reference to the #4 grommet above
ObjectID('F17C'), // reference to a different Part
ObjectID('D2AA'),
// etc
]
我正在考虑做类似的事情,除了一个产品可能由许多产品组成(即它们将具有相同的架构)。产品的环境影响将是子产品的环境影响的总和。这些子代可以反过来成为其他子代产品的父代产品,例如一棵树。
为了使更新的设计不那么复杂,如果孩子的环境影响发生了变化,它不会自动将变化传播到链条上。父母可以从孩子的更新时间戳中看到它是最新的,并且可以选择通过网络界面重新计算来更新其字段。
我是 MongoDB 的新手,所以只想通过社区运行这个模式设计,看看是否有任何潜在的陷阱需要注意这种方法。谢谢。
【问题讨论】:
-
顺便说一句,如果您的零件编号是唯一的(这些东西通常是),您可以将它们保存为
_id值,或将{"partno":"123-aff-456"}存储为_id值。 -
请告诉我们您想要精确建模的内容。也许那时我们可以为您提供更多帮助。
-
Frank 你还在寻找答案还是提供的答案就足够了?
-
@PaulWasilewski - 感谢您提供帮助。我有一个关于我想在另一个 stackoverflow 问题中建模的描述,但它没有得到答案,所以我在这里问了一个更一般的 MongoDB 问题。 stackoverflow.com/questions/37378484/… 目前,我可能会使用 PostGres 进行原型制作,但想稍后尝试 MongoDB。但是,如果您可以为链接问题的答案提供更多帮助,我很想听听。谢谢。
标签: mongodb data-modeling