在mongo中为每个用户存储收藏夹列表?

时间:2017-06-21 10:20:39

标签: mongodb mongoose

我正在使用node,express和mongo处理电影应用。如何在mongo数据库中为每个用户存储喜欢的电影列表?

1 个答案:

答案 0 :(得分:3)

这里有两种选择:

  • 嵌入:即将最喜欢的电影列入用户文档
  • 拆分馆藏:为用户和电影使用两个单独的馆藏,通过ID引用它们

选择哪一个?

您应该根据应用程序的访问策略设计MongoDB集合。

一般情况下,如果符合以下条件,您应该将嵌入电影用于用户文档:

  • 在检索用户信息时始终检索嵌入数据(电影)。如果您总是检索用户信息,但很少需要电影数据,那么嵌入就不会那么好。
  • 嵌入数据不经常受到修改
  • 基数不是太大(记住MongoDB文档的最大大小是16MB)。在这种情况下,我认为每个用户最喜欢的电影的基数可以用于嵌入它们,但如果仅作为示例,每个用户有100K电影,则您被迫分割集合
  • 数据完整性可能是一个问题:将电影嵌入到用户文档中,您可以利用文档级锁定(如果您使用的是有线Tiger存储引擎)。否则,如果您在并发系统中,使用两个集合设计,您必须自己在应用程序级别处理锁定机制。