【发布时间】:2016-03-02 07:30:09
【问题描述】:
我正在使用 Meteor 开发一个 Web 应用程序。我正在做一个标签系统,可以为一个主题分配零个或多个标签。 我想根据当前主题的标签在底部显示10个相关主题。我有两种模式
选项 1:
主题:
{
_id: {
type: String,
optional: false,
unique: true
},
name: {
type: String,
max: 255,
optional: false
}
//other fields..
}
标签:
{
_id: {
type: String,
optional: false,
unique: true
},
name: {
type: String,
max: 255,
optional: false
}
//other fields..
}
主题标签
{
tagId: {
type: String,
optional: false
},
topicId: {
type: String,
optional: false
}
}
在此选项中,TopicsTags 是包含主题和标签之间关系的联结表
选项 2:
主题:
{
_id: {
type: String,
optional: false,
unique: true
},
name: {
type: String,
max: 255,
optional: false
},
tags: {
type: [String]
}
//other fields..
}
标签:
{
_id: {
type: String,
optional: false,
unique: true
},
name: {
type: String,
max: 255,
optional: false
}
//other fields..
}
在此选项中,有一个包含所有标签 ID 的附加字段。我想知道根据meteor 和mongodb 的最常见标签查询前10 个相关主题哪个更好。如果你们能指出任何关于如何查询包含所选主题标签的热门帖子的在线资源,那就更好了。我已搜索但无法获得足够的信息。
我知道当我们向主题添加新标签时,第二种方法会很复杂,但只要阅读速度快就可以了。
编辑 主要问题是哪种模式更好(或有可能)获得相关主题。例如,如果“主题 1”得到“标签 1”、“标签 2”、“标签 3”。我想在以下偏好中获得前 10 个相关主题
- 具有所有三个标签(“标签 1”、“标签 2”、“标签 3”)的其他主题。
- 如果上述条件的记录少于 10 条,那么我希望剩余的记录带有两个标签((“Tag 1”和“Tag 2”)或(“Tag 2”和“Tag 3”)或(“Tag 1”和标签 3")
- 如果上述两个条件组合的记录少于 10 条,那么我希望剩余的记录至少包含一个标签(“标签 1”或“标签 2”或“标签 3”)
非常感谢任何帮助。
【问题讨论】:
标签: mongodb meteor database-schema