- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经浏览了 mongo 网站上的大多数 mongodb 架构设计文章以及 SO 上的大多数问题。还有一个用例我还没有弄清楚。在查看这些教程时,他们通常会引用文章评论问题和产品/类别问题。我想弄清楚在查询帖子列表时如何建模一对多关系(作者与帖子)。以下是示例模式:
Users: {
_id: ObjectID
Name: String
Email: String
}
Posts: {
_id: ObjectID
user_id: ObjectID
body: String
comments: [
body: String
]
}
现在,假设您要查询最新的 10 个帖子。一个非常简单的查询,但现在您的帖子可能每个帖子都有一个指向用户的唯一 ObjectID。现在,您应该如何完成获取每个帖子的用户的姓名和电子邮件。
您是否应该从帖子查询中创建用户 ObjectID 的数组,然后运行查询 db.users.find({ _id: {$in: PostsUserIDArray}});之后,您会使用您的应用程序逻辑将正确的用户信息与正确的帖子相匹配吗?
您是否应该在帖子中保留一份数据副本。 IE。将用户 ID、姓名和电子邮件保存在帖子表中。然后在用户更新此信息时挂一个钩子(Hook)以更新帖子中的所有信息。
我或我的 friend 没有想到的选项。
感谢所有的帮助,因为我试图围绕 mongo 数据建模。
最佳答案
对于我从 MongoDB 创建者那里看到的一些视频,他们提倡第二种解决方案。如果您的用户拥有的数据不仅仅是姓名和电子邮件,并且您在显示帖子时仅显示姓名和电子邮件,那么将其存储在帖子中并不是很糟糕。因此,您在查询帖子时不必执行其他查询。而且由于用户通常不会每天都更改姓名,因此在更改姓名后对所有帖子进行更新比在显示帖子时执行其他查询来检索信息更有效。
编辑:视频链接http://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/
关于schema - 如何在 mongodb 中为作者/用户模型设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975065/
我是一名优秀的程序员,十分优秀!