2

我有一个我最近一直在使用 MongoDB 的项目。基本上,我网站的核心元素是“项目”。每个项目都将包含一个嵌套的“字符串”对象,该对象将包含大量字符串......因此,每个项目都非常庞大,可以接近一兆字节或更多。因此,我希望将这些项目放在他们自己的收藏中。

我遇到的问题是我不确定如何将用户分配给项目。用户应该包含他们注册的项目列表,还是项目应该包含用户列表?我什么时候应该选择其中之一?还有更好的方法吗?(好久没接触MongoDB了,有点生疏了)

4

2 回答 2

1

我无法立即想到两者之间有任何严重的停止差异。我想维护它的用户端可能更容易:

  • 用户取消订阅项目,因为您只是修改了可能只有原子锁的用户行,这与多个用户可能试图同时取消订阅的项目行不同。因此,一般而言,这样做用户端可能会做出更好的更新和并发性。
  • 前一点也适用于订阅项目的用户。
  • 用户删除,你只需删除用户行...简单

所以考虑到这些直接想到的事情,我可能会选择在用户中嵌入项目。

于 2012-11-05T08:57:32.650 回答
0

看看http://www.mongodb.org/display/DOCS/Schema+Design。适用于您的情况的指南是

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

如果一个用户可以注册多个项目,并且一个项目可以注册多个用户,那么最好为 Projects 和 Users 设置单独的集合。

于 2012-11-05T03:36:15.420 回答