如何在mongodb中为作者/用户模型设计模式

ric*_*son 7 schema schema-design mongodb

我查看了mongo网站上的大多数mongodb架构设计文章以及SO上的大部分问题.还有一个我还没想到的用例.在查看这些教程时,他们通常会参考文章评论问题和产品/类别问题.我想弄清楚在查询帖子列表时如何建模一对多关系(作者到帖子).以下是示例模式:

Users: {
    _id: ObjectID
    Name: String
    Email: String
}

Posts: {
    _id: ObjectID
    user_id: ObjectID
    body: String
    comments: [
        body: String
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,假设您要对最近的10个帖子运行查询.一个非常简单的查询,但现在你有一些帖子,每个帖子都有一个指向用户的唯一ObjectID.现在,您应该如何完成获取帖子的每个用户的姓名和电子邮件.

  1. 您应该从posts查询创建用户ObjectID的数组,然后运行查询db.users.find({_ id:{$ in:PostsUserIDArray}}); 之后,您会使用您的应用程序逻辑将正确的用户信息与正确的帖子相匹配吗?

  2. 您是否应该在帖子中保留数据的副本.IE在posts表中保留用户ID,名称和电子邮件.然后,当用户更新此信息以更新帖子中的所有信息时,只需一个钩子.

  3. 我或我的朋友没有想过的选项.

当我尝试围绕mongo数据建模时,我感谢所有的帮助.

Tre*_*xXx 2

在我看到的 MongoDB 创建者的一些视频中,他们提倡第二种解决方案。如果您的用户拥有的数据不仅仅是姓名和电子邮件,并且您在显示帖子时仅显示姓名和电子邮件,那么将其存储在帖子中也不错。因此,您在查询帖子时不必执行其他查询。由于用户通常不会每天更改其姓名,因此在更改姓名后对所有帖子进行更新比在显示帖子时执行其他查询来检索信息更有效。

编辑:链接到视频http://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/