1

私は私の心の中にタグ付けシステムを持っています、そしてここに私の考えがあります、

1、mongodbデータベースを作成し、埋め込みフィールドにタグを追加して、それらすべてにインデックスを付けることができます

2、SQLを使用でき、タグを新しいエントリとしてテーブルに追加できます

3、mongodbで別のコレクションを作成して、このようにすることができます

たとえば、タグは「チキン」です。これはドキュメントです。

tag:"chicken",
id:"1200000,32555,8787888888"

タグはチキン、IDはチキンに関連する他のドキュメントです。これらのシステムは私に多くの頭痛の種を与えると思います。特に最初のもの。私のニーズに合ったタグ付けシステムのアイデアはありますか?ちなみに、この質問を開く前に、100万を超えるさまざまなタグがあり、このタグ付けシステムを検索しました。

ありがとうございました

4

2 に答える 2

1

mongo でこれを達成しようとしている場合は、次のようなドキュメントを作成します。

{
    tag: "chicken",
    ids : [ 12345,23456,34567 ]
},
...

次に、2 つのインデックス、1 つは「タグ」、1 つは「ids」のマルチキー インデックスです (http://docs.mongodb.org/manual/core/indexes/#multikey-indexes)。

db.tags.ensureIndex( { "tag": 1 } );
db.tags.ensureIndex( { "ids": 1 } );

実行する必要のあるクエリによっては、両方の属性で複合インデックスを作成する価値がある場合があります。 http://docs.mongodb.org/manual/core/indexes/#compound-indexes

例えば

db.tags.ensureIndex( { "ids": 1, "tag" : 1 } );

100 万個のタグ ドキュメントは問題になりません。マルチキー インデックスに平均 15 アイテムのドキュメントがそれぞれ 300 万個まである同様のコレクションがあり、パフォーマンスは優れています (dev vm から)。

これが役立つことを願っています

于 2012-12-08T19:32:20.243 に答える
1

MongoDB は、リストにインデックスを付ける方法のおかげで、このようなタグ付けに最適です。次のようなドキュメントを考えてみましょう:

{_id: 42, name: "someName", tags: ["chicken", "parrot", "hovercraft"]}

フィールドにインデックスを追加すると、次のtagsようなクエリを効率的に実行できます。

{tags: "chicken"}

このクエリは"chicken"、そのtagsリストに含まれるすべてのドキュメント、つまり tag でchickenタグ付けされたすべてのドキュメントを検索します。

これが最初のポイントであなたが意図したものかどうかはわかりません。もしそうなら、なぜ頭が痛くなるのか理解できません。

于 2012-12-08T19:32:50.550 に答える