我希望能够在数据库(MongoDB)中为记录添加最多10个标记,但我不想在每个标记上添加10个包含相关索引的列。所以我想我会添加这些标签的唯一总和。在搜索结果中查找A和C搜索结果
例如(带有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;
}
}
然而,我的问题是,我认为必须有一个数学公式,我可以用它来查询一个特定的标签,例如通过传递值4来查找“c标签”。我错了或者找不到它。
我很高兴去与蒙戈的Multikeys解决方案,但我有很多其他数据的索引,并使用1个指数,而不是10也只是nicer‽
让索引更简单的好主意。不幸的是,如果你必须计算位掩码,我认为你不能利用这个索引。 – 2012-04-29 05:22:44
我想你要找的是一个按位与,如下所示:value&4!= 0,或者我错了吗? (你必须在JavaScript中这样做,因为它不能使用索引) – 2012-04-29 05:26:21