所以我有一种情况,我使用数组标记文档,例如:
tags: [
'Housing' : 10,
'Retail' : 1,
'Stocks' : 25,
]
我只是自己保存标签,但最近添加了数字,因为我需要知道排名/位置。因此,标签旁边的数字代表该文档在标记有该标签的文档集中的排名。
它在一些地方变得棘手,但现在我只是想弄清楚如何添加另一个带有一个或多个这些标签的文档。假设我创建了一个新文档并将其标记为 Housing。它的等级需要设置为 11,但我怎么知道呢?
到目前为止,我能找到的唯一解决方案是做一个 map/reduce 来遍历记录并找到该标签的最大值,添加一个并保存。现在,大多数记录可能每个只有 2-3 个标签,但理论上可能有 10-15 个。无论哪种方式,一旦有很多标签和很多记录,map/reduce 似乎都需要付出巨大的努力......
有没有更简单的方法,还是我应该开始寻找解决这个问题的另一种方法?
编辑:
让我给你一些关于我试图解决的问题的更多细节......我正在幻灯片/轮播中显示图像。幻灯片涵盖了不同的类别,因此使用上面的类别/标签,您可以查看所有图像,或者仅查看来自住房、零售、股票等的图像。现在我只有少数定义的类别,但它相当这些可能会随着时间的推移而扩大。它们需要按标签过滤,并按日期排序(最新的优先)。
现在,到目前为止,我一直在这样做。当我想在甲板中间选择任意图像时,问题就出现了。假设您要加载 6 个月前上传的“housing_chart.gif”。我不想加载 6 个月的图像以获取该图像(这基本上是我现在正在做的)。相反,我想加载该特定图像,然后能够为下一张/上一张图像对其进行分页。
但是为了对轮播上的图像进行“分页”,我必须知道该图像在结果中的位置……而无需实际获取所有结果并进行计数。所以我认为对他们进行排名是可行的方法,但这也会导致其他问题。我真的不喜欢仅仅为了存储排名而创建另一个集合的想法,但这可能是最有效的方式。