10

ここで、コメント システム用の DB をモデル化する方法に関する MongoDB のチュートリアルを読んでいます。1 つのコメント ドキュメントには、次の情報が含まれています。

{
    _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

基本的に、スラッグは「人間が読めるキーワードを使用して」オブジェクトを「識別する URL の一部」にすぎません (ウィキペディアの「セマンティック URL」を参照) 。

MongoDB ユース ケース ドキュメント「Storing Comments」では、各コメントは一意の短い「slug part」を取得します。これは一種のデータベースに依存しない代替 ID と見なすことができます。コメント ドキュメントのslugフィールドは、実際のコメントへのパスを形成するために、ディスカッション スレッド階層に沿ってすべてのコメントのすべてのスラグ部分を連鎖させることによって構築されます。基本的に、スラッシュで区切られたすべての (親) コメントの ID の文字列表現を結合することによって構築することもできます。しかし、そうすると、はるかに長くなり、人間が判読しにくくなり、基礎となる MongoDB データベースにある程度依存するようになります。

full_slugフィールドは上記のように形成されslugますが、各スラッグ部分には、関連するコメントの作成日時が前に付けられます。これは、ディスカッションスレッドと日付でソートされたクエリを一度に実行するために必要であるか、少なくとも有利であるように思われます。このfull_slugフィールドは、ディスカッション スレッドと日付でソートされたクエリを実装するためだけに配置されています。

于 2016-01-30T12:33:08.353 に答える
1

一つは、上記の答えのようなものです。しかし、それらには別の用法もあると思います。

スレッド化されたコメント (コメントへの返信など) を必要とするコメント システムでは、取得したコメントを「full_slug」でソートできるようにするために、この「slug」スタッフが必要です。

スレッド順でソートされたコメントの配列が得られました。フロントエンドでは、異なるインデントで表示できます。

于 2014-03-20T17:05:41.560 に答える
0

slug は人間が判読できる一意の識別子であり、 id のような人間が判読しにくい識別子の代わりにリソースを識別するために使用されます。アイテムが何であるかを一目で確認できる機能を維持しながら、アイテムを参照したい場合は、スラッグを使用します。これらの識別子は、URL で使用されます。

于 2021-01-21T01:35:08.637 に答える