[英]Storing relational data in MongoDB (NoSQL)
我一直试图了解NoSQL,我确实看到了在文档中嵌入数据的好处。
我无法理解,并希望有人可以清理,如果它必须是关系的,如何存储数据。
例如。
我有很多用户。 他们都在购买产品。 因此,每次他们购买产品时,我们都会在mongo的用户文档下添加它,因此它的嵌入式和一切都很棒。
我遇到的问题是当涉及该产品的某些内容发生变化时。
让我们说用户A购买了一辆名为“保时捷”的汽车。 然后,我们在用户配置文件下添加对该引用的引用。 然而,在一系列奇怪的事件中,保时捷被法拉利收购。
您现在做什么,更新每一条记录并更改为保时捷到法拉利的名称?
通常在SQL中,我们将创建3个表。 一个用于用户,一个用于汽车(描述,型号等),一个用于将用户映射到购买。
你对Mongo做同样的事吗? 看起来如果沿着这条路走下去,你就是想让Mongo以SQL方式做事,这不是它的目的。
我可以理解某些数据如何适用于嵌入(地址,联系方式,注释等),但是当您需要引用可以并且需要定期更改的数据时会发生什么?
我希望这个问题很清楚
DBRefs / Manual References专门用于解决此问题。 您可以存储对另一个集合的引用,而不是手动将数据添加到每个文档,然后需要在更改时更新。 这是mongoDB文档的详细信息。
然后,您需要做的就是更新参考集合,更改将反映在所有下游位置。
当我使用mongoose库作为节点js时,它实际上创建了3个类似于在SQL中执行它的表,你可以使用对象id作为外键并在客户端或后端丰富它们,仍然没有加入但是你可以对ID进行'in'查询然后以这种方式丰富对象,mongoose可以通过'填充'自动执行此操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.