【发布时间】:2020-04-10 12:49:51
【问题描述】:
我对 Mongodb 还不是很熟悉,但是我有一个关于嵌入式文档的问题。
我看过一些帖子,它们向您展示了如何通过一些更新查询来更新嵌入的文档。
我的问题是:如果我有一个包含嵌入式文档的集合 - 为了性能而对其进行了非规范化;并且其中一个嵌入文档发生更改,那么我是否需要手动更新所有嵌入文档,或者是否有某种方法可以将 MongoDB 中的链接指定为自动更新?
例如: 订单记录可能类似于以下结构。请注意,其中一行中有一个产品项目。
假设 ItemName 字段在来自不同集合的产品中更改为“Product1a”,我想在每个订单中更新该产品。这是一个手动过程 - 还是有办法在 Mongodb 中设置它以自动更新嵌入式文档?
{
"id": "ccc1beb1-e022-11e9-97f0-e7e789106ab2",
"type": "order",
"orderNumber": "ORD-100209857x",
"orderDate": "2019-09-26T17:42:31.000+12:00",
"orderItems": [
{
"discount": 0,
"price": 24.4944,
"product": {
"id": "ccc1beb1-e022-11e9-97f0-e7e789106ab2",
"itemNumber": "prd1",
"itemName": "Product1"
},
"qty": 4,
"rowTotal": 97.96,
"taxAmount": 9.8
},
{
"discount": 0,
"price": 3.21,
"itemName": "Shipping",
"qty": 1,
"rowTotal": 3.21,
"taxAmount": 0
}
]
}
【问题讨论】:
-
这是一个手动过程 - 但取决于。如果
itemName发生变化,您可以选择仅更新产品集合,或仅更新产品集合+有效订单,或仅更新最近3个月的产品集合+订单等。这取决于您的数据和应用要求。跨度>
标签: mongodb