データベース (MongoDB) のレコードに最大 10 個のタグを追加できるようにしたいのですが、それぞれに関連するインデックスを含む 10 個の列を追加したくありません。そこで、これらのタグの一意の合計を追加すると考えました。
例(6つのタグ付き)
|------------|
|value | tag |
|------------|
|1 |a |
|2 |b |
|4 |c |
|8 |d |
|16 |e |
|32 |f |
|------------|
例えば
a + b = 3
b + c + d = 14
次に、値の合計だけを Mongo に保存します。
これらの組み合わせは常に一意であり、反復を使用して永続ストレージからプルするときにタグに「再構成」できます。
int tagSum
for each (tag in tagCollection.OrderDescending)
{
if (tagSum >= (int)tag)
{
TagProperty.Add(targetAge);
tagSum -= (int)tag;
}
}
しかし、私の問題は、特定のタグを照会するために使用できる数式が必要だと思ったことです。たとえば、値 4 を渡して「c タグ」を見つけます。間違っているか、見つけられません。
Mongo の Multikeys ソリューションを使用することに満足していますが、インデックスを作成するデータが他にもたくさんあるため、10 ではなく 1 つのインデックスを使用した方がよいでしょう‽</p>