0

RailsとMongoidを使用しています。私はタグ付け機能を考え出そうとしています(各ユーザーが「お気に入り」のタグを持つことができるという点でstackoverflowに似ています)。

mongodbについて読んだデザイン記事から、「第4正規」の形で考えるのをやめる必要があることがわかりました。私は多対多のテーブルとと、そして別の多対多のテーブルととを考え続けてtag_iduser_idます。しかし、nosqlについて読むと、各ユーザーまたはアイテム内にタグ(タグまたは文字列の配列として)を埋め込む方がはるかに良いように思われます。tag_iditem_id

「tags」コレクションにはタグのリストがあり、アプリケーションはユーザーがお気に入りにタグを追加できるかどうかを制御します。

私はこれを行う方法を理解しようとしています。tagモデルにを持っていてkeytitleそれらの配列をkeysユーザーモデルに格納するだけですか?この状況では、「リンク」または「埋め込み」の方が適していますか?foo-barのようなキーがあり、タイトルが。であるため、タグを取得する方法を考えていますFoo Bar。ユーザーのタグを取得する必要がある場合は、配列をループして各タグモデルをフェッチし、タイトルを取得する必要がありますか?

4

1 に答える 1

0

これの Ruby の側面についてはお手伝いできませんが、MongoDB 側のいくつかのオプションを次に示します。

次のようなエントリを持つタグ コレクションを作成できます{_id: ObjectId(), title: "Foo Bar"}。各ユーザーは、サブスクライブするタグの id 値の配列も持つことができます。

{ username: ...,
  tags: [ObjectId(), ObjectId(), ... ]}

$in 演算子を使用して、ユーザー タグのタイトルを取得できます。

db.tags.find({_id: { $in: [array from user] }});
于 2012-05-02T18:39:18.483 に答える