0

假设我在 mongodb 中有两个集合,一个用于包含用户基本信息的用户,一个用于包含应用程序的应用程序。现在如果允许用户添加应用程序,下次登录时,网络应该获取用户添加的应用程序对于他们来说,我应该如何在 mongodb 中构建这种数据库。

users:{_id:ObjectId(),username:'username',password:'password'}
apps:{_id:ObjectId(),appname:'',developer:,description:};

我应该如何让用户为他们添加应用程序???我应该添加类似于 addedAppId 的内容,例如:

users:{_id:ObjectId(),username:'username',password:'password',addedApppId:[]}

指示他们添加了哪个应用程序,然后使用addedAppId获取应用程序???

4

1 回答 1

1

users是的,收集跟踪用户添加的应用程序没有任何问题,就像您指出的那样。

linking这在 MongoDB中被称为。在关系系统中,您可能会创建一个单独的表 ,added_apps其中包含用户 ID、应用 ID 和任何其他相关信息。但是由于您不能加入,因此将这些信息保留在users集合中是完全合适的。

文档

设计 MongoDB 模式时的一个关键问题是何时嵌入以及何时链接。嵌入是在 BSON 文档中嵌套对象和数组。链接是文档之间的引用。

MongoDB 中没有连接——分布式连接在 1000 个服务器集群上会很困难。嵌入有点像“预加入”数据。文档内的操作很容易被服务器处理;这些操作可以相当丰富。相反,链接必须由应用程序在客户端处理;应用程序通过发出后续查询来做到这一点。

(这是您需要做的额外工作,从用户的存储中获取应用程序信息AppId。)

一般来说,对于实体之间的“包含”关系,应该选择嵌入。不使用链接时使用链接会导致数据重复。

...

多对多关系通常是通过链接完成的。

于 2012-08-07T01:51:30.273 回答