【问题标题】:MongoDB commenting system Slug, What is it for?MongoDB评论系统Slug,它是干什么用的?
【发布时间】:2012-10-11 18:38:17
【问题描述】:

我正在阅读有关如何为评论系统in here 建模数据库的 MongoDB 教程。 一份评论文件包含以下信息:

{
    _id: ObjectId(...),
    discussion_id: ObjectId(...),
    parent_id: ObjectId(...),
    slug: '34db/8bda'
    full_slug: '2012.02.08.12.21.08:34db/2012.02.09.22.19.16:8bda',
    posted: ISODateTime(...),
    author: {
              id: ObjectId(...),
              name: 'Rick'
             },
    text: 'This is so bogus ... '
}

我似乎无法理解 slugfull_slug 的用途,无法从文档中理解。

【问题讨论】:

    标签: mongodb slug


    【解决方案1】:

    在我看来,它看起来像是某种获取 cmets 的 URL 快捷方式,例如,当您键入: http://site.com/34db/8bda 会为您带来评论本身,full-slug 用于在 cmets 发布时对其进行排序。

    【讨论】:

    • 有没有办法生成这些蛞蝓?
    • 我找到了这个 git,也许它会帮助你生成 slug:github.com/crowdint/slugoid
    • 恕我直言,slug 示例对于现实世界来说太小了,如果它充当替代唯一键。
    【解决方案2】:

    基本上,slug 只不过是“使用人类可读的关键字识别”对象的“URL 的一部分”(参见 Wikipedia "Semantic URL"

    MongoDB use case document "Storing Comments" 中,每个评论都有一个独特的短“slug 部分”,它可以被视为一种替代的、独立于数据库的 ID。然后,通过将所有 cmets 的所有 slug 部分与讨论线程层次结构链接起来,构建评论文档的 slug 字段,以形成实际评论的路径。基本上,它也可以通过加入由斜线分隔的所有(父)cmets 的 ID 的字符串表示来构建。但它会更长,更不可读,并且在某种程度上更依赖于底层的 MongoDB 数据库。

    full_slug 字段的形成类似于上述slug,但每个 slug 部分都以创建其相关评论的日期和时间为前缀。这似乎是必要的或至少有利于一次按讨论线程和日期执行排序查询。 full_slug 字段仅用于执行按讨论线程和日期排序的查询。

    【讨论】:

      【解决方案3】:

      有一件事就像上面的答案。但我认为它们还有另一种用法。

      对于需要线程化 cmets 的评论系统(例如回复评论),您需要这个“slug”东西以便能够按“full_slug”对检索到的 cmets 进行排序。

      产生了一个按线程顺序排序的 cmets 数组。在前端,您可以使用不同的缩进显示它们。

      【讨论】:

        【解决方案4】:

        slug 是人类可读的唯一标识符,用于标识资源,而不是像 id 这样的人类可读性较差的标识符。当你想引用一个项目时,你可以使用 slug,同时保留一眼就能看到该项目是什么的能力。 然后在 URL 中使用这些标识符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-16
          • 2018-05-24
          • 2015-04-02
          • 2015-03-03
          • 2011-10-24
          • 1970-01-01
          • 2011-08-06
          • 2013-10-28
          相关资源
          最近更新 更多