繁体   English   中英

在MongoDB中存储关系数据(NoSQL)

[英]Storing relational data in MongoDB (NoSQL)

我一直试图了解NoSQL,我确实看到了在文档中嵌入数据的好处。

我无法理解,并希望有人可以清理,如果它必须是关系的,如何存储数据。

例如。

我有很多用户。 他们都在购买产品。 因此,每次他们购买产品时,我们都会在mongo的用户文档下添加它,因此它的嵌入式和一切都很棒。

我遇到的问题是当涉及该产品的某些内容发生变化时。

让我们说用户A购买了一辆名为“保时捷”的汽车。 然后,我们在用户配置文件下添加对该引用的引用。 然而,在一系列奇怪的事件中,保时捷被法拉利收购。

您现在做什么,更新每一条记录并更改为保时捷到法拉利的名称?

通常在SQL中,我们将创建3个表。 一个用于用户,一个用于汽车(描述,型号等),一个用于将用户映射到购买。

你对Mongo做同样的事吗? 看起来如果沿着这条路走下去,你就是想让Mongo以SQL方式做事,这不是它的目的。

我可以理解某些数据如何适用于嵌入(地址,联系方式,注释等),但是当您需要引用可以并且需要定期更改的数据时会发生什么?

我希望这个问题很清楚

DBRefs / Manual References专门用于解决此问题。 您可以存储对另一个集合的引用,而不是手动将数据添加到每个文档,然后需要在更改时更新。 这是mongoDB文档的详细信息。

Mongo中的参考文献

然后,您需要做的就是更新参考集合,更改将反映在所有下游位置。

当我使用mongoose库作为节点js时,它实际上创建了3个类似于在SQL中执行它的表,你可以使用对象id作为外键并在客户端或后端丰富它们,仍然没有加入但是你可以对ID进行'in'查询然后以这种方式丰富对象,mongoose可以通过'填充'自动执行此操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM