10

我正在阅读有关如何在此处为评论系统建模数据库的 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 ... '
}

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

4

4 回答 4

12

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

于 2012-10-21T23:34:58.313 回答
8

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

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

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

于 2016-01-30T12:33:08.353 回答
1

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

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

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

于 2014-03-20T17:05:41.560 回答
0

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

于 2021-01-21T01:35:08.637 回答