【发布时间】:2020-02-04 04:03:51
【问题描述】:
我正在为一个小型社交网络构建一个 API,我遇到了我必须做出的设计决策。我正在使用 Express 和 MongoDB 以及 mongoose 来处理数据库。
我有两个文档:用户和帖子。我希望用户能够将帖子标记为他们的收藏夹。我想出了两种不同的实现方式:
选项 A:将收藏夹保存在用户文档中。它可以轻松显示用户所有喜欢的帖子。但是我将如何查询已收藏特定帖子的用户?
UserSchema:
favorite_posts: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "posts"
}
]
选项 B:保存用户,点击发布文档中的收藏按钮。这样做的好处是,您可以轻松地显示所有收藏帖子的用户。但是如何列出某个特定用户标记为收藏的所有帖子。
PostSchema:
users_favorited: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "users"
}
]
谁能解释我如何查询这些东西?我没有从文档中变得更聪明...... :(
【问题讨论】:
-
您可以在这两种方法中查询关系的任一方(但我不能告诉您为此的猫鼬代码)。不过,为什么不将链接存储在自己的文档中呢?
-
那么像一个连接表?我的意思是它可以正常工作,但我认为在 mongoDB 中你不使用连接表,因为它不是关系数据库?
-
好吧,不管是否是关系型的,但在这里这种方法看起来比其他两种方法更好(恕我直言,自然)。
标签: mongodb express mongoose database-design mongodb-query