MongoDB评论系统Slug,它是干啥用的?

Posted

技术标签:

【中文标题】MongoDB评论系统Slug,它是干啥用的?【英文标题】: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 的用途,无法从文档中理解。

【问题讨论】:

【参考方案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 中使用这些标识符。

【讨论】:

以上是关于MongoDB评论系统Slug,它是干啥用的?的主要内容,如果未能解决你的问题,请参考以下文章

mysql是干啥用的?

C#中的KeyValuePair类是干啥用的?

hybris 中的 hjmpts 列是干啥用的?

Java中的Statement类是干啥用的?

请问WINDOWS系统Hosts文件是干啥用的

vender文件夹下的文件是干啥用的