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

标签 mongodb mongoose

我正在使用 node、express 和 mongo 使用电影应用程序。如何在 mongo 数据库中存储每个用户最喜欢的电影列表?

最佳答案

在这里,您有两种选择:

  • 嵌入 :也就是说,将其最喜欢的电影列表包含在用户文档中
  • 拆分收藏 :为用户和电影使用两个单独的集合,通过 ID
  • 引用它们

    选择哪一个?

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

    一般来说,你应该去嵌入电影进入用户文档,如果:
  • 检索用户信息时,始终检索嵌入的数据(电影)。如果您总是检索用户信息,但很少需要电影数据,那么嵌入就不会那么好。
  • 嵌入的数据不经常修改
  • 基数不是太大(记住 MongoDB 文档最大大小是 16MB)。在这种情况下,我认为每个用户最喜欢的电影的基数可以用来嵌入它们,但如果仅举个例子,您每个用户有 10 万部电影,您将被迫拆分集合
  • 数据完整性可能是一个问题:将电影嵌入到用户文档中,您可以利用文档级锁定(如果您使用的是 Wired Tiger 存储引擎)。否则,如果您在并发系统中,使用两个集合设计,您必须在应用程序级别自己处理锁定机制。
  • 关于mongodb - 在 mongo 中为每个用户存储收藏夹列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44673383/

    相关文章:

    node.js - 需要帮助来优化查询中的数据处理

    javascript - 如何仅使用一个关键字搜索 MongoDB 集合中的所有键

    mongodb - 如何在不定义模式的情况下使用 Mongoose?

    node.js - 如何从对象数组中选择特定键的所有值

    javascript - 使用 Mongoose 查询 MongoDB 中的模板文字

    java - DuplicateKeyException wile bean 创建 Spring-data

    node.js - 如何使用 Mongoose 仅在过期时删除子文档?

    C# MongoDb FindAndUpdate(很多)

    node.js - Mongoose 电话挂起

    node.js - 如何处理生产中的mongodb "schema"变化