0

この質問が何度か聞かれたことは知っていますが、私の検索スキルに関する限り、すべての投稿はこれをSQLデータベースに実装する方法であり、NoSQLデータベースについては言及されていません。

タグ付け機能を実装したいドキュメントがあります。
ユーザーは好きな文字列でタグを付けることができます。次に、(これらの汎用タグを使用して)できるだけ速くドキュメントをクエリできるようにする必要があります。

Stringこのように、タグの配列(任意の数のタグをサポートできるようにする)が必要ですか?

{"_id":"aaa", "prop":"value", "tags":["tag1","tag2","tagN"]}

または、タグの数をたとえば5に制限し、次のように異なるプロパティとしてタグを付けます。

{"_id":"aaa", "prop":"value", "tag1":"value", "tag2":"value", "tag3":"value" }

特にmongodbでの高速クエリには、どの構造が適していますか?

2番目の構造を使用すると、このフィールドでコレクションにインデックスを付けることができますが、5つのインデックスをお勧めしますか?タグを少なくする必要がありますか?

4

1 に答える 1

1

最初の例である配列を使用したいだけです。これにより、一貫性のあるモデルとインデックスを作成できます。

{"_id":"aaa", "prop":"value", "tags":["tag1","tag2","tagN"]}

配列を含むフィールドにインデックスを付ける場合、MongoDBは配列内の各値を「マルチキーインデックス」で個別にインデックス付けします。[1]

[1] http://docs.mongodb.org/manual/core/indexes/#multikey-indexes

于 2012-11-19T17:02:26.143 に答える