我希望能够向数据库 (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 解决方案,但我还有很多其他数据要索引,使用 1 个索引而不是 10 个索引会更好‽</p>