我正在阅读关于如何为数据库建模以评论系统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 ... '
}
我似乎无法理解的是slug
和full_slug
的用途,无法从文档中理解。
答案 0 :(得分:8)
对于我的观点,它看起来像某种URL快捷方式来获取注释,例如,当您键入时:
http://site.com/34db/8bda
它会自动为您提供评论,full-slug
用于在评论发布之前对评论进行排序和排序。
答案 1 :(得分:4)
基本上,一个slug只不过是“使用人类可读关键字识别”对象的URL的一部分“(参见Wikipedia "Semantic URL")
在MongoDB use case document "Storing Comments"中,每个评论都会得到一个独特的短“slug部分”,可以将其视为一种替代的,与数据库无关的ID。然后,通过将所有注释的所有段落部分与讨论线程层次结构一起链接来构建注释文档的slug
字段,以形成实际注释的路径。基本上它也可以通过连接由斜杠分隔的所有(父)注释的ID的字符串表示来构建。但是它会更长,人类可读性更低,并且在某种程度上更依赖于底层的MongoDB数据库。
full_slug
字段的形成类似于slug
,如上所述,但每个段塞部分都以创建其相关注释的日期和时间为前缀。这似乎是必要的或者至少有利于通过讨论线程和日期立即执行排序查询。 full_slug
字段仅用于实现按讨论主题和日期排序的查询。
答案 2 :(得分:1)
有一件事就像上面的答案。但我认为他们还有另一个消息。
对于评论需要线程评论的系统(比如回复评论),你需要这个" slug"这些东西是为了能够通过" full_slug'对检索到的评论进行排序。
导致按线程顺序排序的注释数组。在前端,您可以使用不同的缩进显示它们。
答案 3 :(得分:0)
slug 是人类可读的唯一标识符,用于标识资源,而不是像 id 这样的人类可读性较差的标识符。当您想引用一个项目同时保留能够一目了然地看到该项目是什么时,您可以使用 slug。 然后在 URL 中使用这些标识符。