Я хочу иметь возможность добавить до 10 тегов в запись в базе данных (MongoDB), но я не хочу добавлять 10 столбцов с соответствующими индексами для каждого из них. Поэтому я решил добавить уникальную сумму этих тегов.Найти A & C In Search Результат
например. (с 6 тегами)
|------------|
|value | tag |
|------------|
|1 |a |
|2 |b |
|4 |c |
|8 |d |
|16 |e |
|32 |f |
|------------|
например.
A + B = 3
B + C + D = 14
Я тогда хранить только сумму стоимости в Монго.
Эти комбинации всегда уникальны, и я могу «восстановить» их обратно в теги при извлечении из постоянного хранилища с помощью итерации.
int tagSum
for each (tag in tagCollection.OrderDescending)
{
if (tagSum >= (int)tag)
{
TagProperty.Add(targetAge);
tagSum -= (int)tag;
}
}
Моя проблема однако заключается в том, что я думал, что должна быть математическая формула, которую я мог бы использовать для запроса определенного тега, например. найдите «c tag», передав значение 4. Я либо ошибаюсь, либо не могу найти его.
Я рад пойти с решением Multikeys в Монго, но у меня есть много других данных для индекса и с использованием 1 индекса вместо 10 будет просто nicer‽
Прохладная идея, чтобы сделать индекс проще. К сожалению, я не думаю, что вы можете воспользоваться индексом, если вам нужно рассчитать битмаски. –
Я думаю, что вы ищете побитовое И, например: value & 4! = 0, или я не прав? (Вам нужно будет сделать это в javascript, где, который не может использовать индексы) –