mongodb - 具有大量类似 sql 连接的查询的数据库设计

标签 mongodb join database-design database

我有一个名为 posts 的集合,其中包含多篇文章帖子和一个名为 users 的集合,其中包含大量用户信息。每个 post 都有一个名为 author 的字段,它引用 users 集合中的帖子作者。

在我的主页上,我将查询 posts 集合并将帖子列表返回给客户端。因为我还想显示帖子的作者,所以我需要执行类似 sql 的连接命令,以便所有帖子都有作者姓名、ID 等。

如果我返回一个包含 40 个帖子的列表,我必须执行 40 个类似 sqllike 的连接。这意味着每次我都会进行 41 次查询以获取包含作者信息的帖子列表。这看起来真的很贵。

我正在考虑在存储帖子信息时存储作者信息。这样我只需要做 1 个查询来检索所有帖子和作者信息。但是,当用户信息发生变化时(例如名称更改),列表将过时,并且管理这样的列表似乎不太容易。

那么有更好的或标准的方法吗?

p.s: 我用的是mongodb

最佳答案

Mongo 是 NoSQL 数据库。根据定义,NoSQL 解决方案意味着非规范化(所有必需的数据应位于同一位置)

在您的示例中,作者和帖子之间的关系是一对多的,但作者与帖子的比例非常小。简单来说,不。作者相比没有。职位将非常小。

基于此,您可以安全地将作者信息存储在帖子集合中。

如果您需要查询帖子集合,即如果您知道大多数查询将在帖子集合上执行,那么将作者存储在帖子中是有意义的。存储一个属性不会占用大量空间,但会在查询性能和编码/检索数据的简便性方面产生巨大差异。

关于mongodb - 具有大量类似 sql 连接的查询的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842548/

相关文章:

mongodb - MongoDB中如何将两个字段合并为一个字段

javascript - meteor 检查用户是否是管理员

sql - 表垂直分区的优点

database - 使用对象角色建模 (ORM) 的关系模型中的动态类型

php - 左连接正在无限期加载的mysql

php - 数据库设计困境

javascript - 多类型用户的 Mongoose 模型

mongodb - 创建新文档时出现 Cosmos DB 错误代码 400

mysql - 我的 MySQL JOIN 查询只从一个表中获取数据

mysql - 查询Mysql错误: Not unique table/alias