【问题标题】:Schema for a tags system标签系统的架构
【发布时间】: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. 具有所有三个标签(“标签 1”、“标签 2”、“标签 3”)的其他主题。
  2. 如果上述条件的记录少于 10 条,那么我希望剩余的记录带有两个标签((“Tag 1”和“Tag 2”)或(“Tag 2”和“Tag 3”)或(“Tag 1”和标签 3")
  3. 如果上述两个条件组合的记录少于 10 条,那么我希望剩余的记录至少包含一个标签(“标签 1”或“标签 2”或“标签 3”)

非常感谢任何帮助。

【问题讨论】:

    标签: mongodb meteor database-schema


    【解决方案1】:

    我会将标签信息(您希望与主题一起显示)作为一个数组包含在主题文档本身中。您将阅读此信息而不是更新它。主题的标签不是经常变化的。

    【讨论】:

    • 刚刚更新了问题。对我来说主要问题是我不知道是否可以使用两种模式之一来根据上述标准获取相关主题。
    • 同意@Areca。还给出了 MongoDB 的数组运算符列表,我认为实现 OP 想要的并不是很困难。
    猜你喜欢
    • 2010-12-17
    • 2012-09-02
    • 1970-01-01
    • 2022-08-20
    • 2010-10-07
    • 2010-09-09
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多