我应该如何在MongoDB中存储属于多个其他对象的对象?

我应该如何在MongoDB中存储属于多个其他对象的对象?,mongodb,database-design,database,nosql,Mongodb,Database Design,Database,Nosql,我最近在使用MongoDB进行一个项目。基本上,我网站的核心元素是“项目”。每个项目将包含一个嵌套的“字符串”对象,该对象将包含大量字符串。。。因此,每个项目都相当庞大,可以接近1兆字节或更多。因此,我希望有自己的收集项目 我遇到的问题是,我不确定如何为项目分配用户。用户应该包含他们注册的项目列表,还是项目应该包含用户列表?我什么时候该选一个呢?还有更好的办法吗?(我好久没碰MongoDB了,所以我有点生疏了)看看。适用于您的案例的指导原则是 通常,对于实体之间的“包含”关系,应该选择嵌入。如果

我最近在使用MongoDB进行一个项目。基本上,我网站的核心元素是“项目”。每个项目将包含一个嵌套的“字符串”对象,该对象将包含大量字符串。。。因此,每个项目都相当庞大,可以接近1兆字节或更多。因此,我希望有自己的收集项目

我遇到的问题是,我不确定如何为项目分配用户。用户应该包含他们注册的项目列表,还是项目应该包含用户列表?我什么时候该选一个呢?还有更好的办法吗?(我好久没碰MongoDB了,所以我有点生疏了)

看看。适用于您的案例的指导原则是

通常,对于实体之间的“包含”关系,应该选择嵌入。如果不使用链接,则使用链接将导致数据重复


如果一个用户可以注册到多个项目中,并且一个项目可以注册多个用户,那么最好为项目和用户分别设置集合

我想不出两者之间有什么严重的区别。我认为维护it用户端可能更容易:

  • 用户从项目中取消订阅,因为您只是修改了该用户行,而该用户行上可能只有原子锁,这与多个用户可能同时尝试取消订阅的项目行不同。因此,在用户端这样做通常可能会带来更好的更新和并发性
  • 前一点也适用于订阅项目的用户
  • 用户删除,您只需删除用户行…简单
因此,考虑到我想到的这些直接的事情,我可能会选择在用户中嵌入项目