所以我有一个情况我使用数组标记文件,如:如何获取MongoDB中的子数组的最小/最大值?
tags: [
'Housing' : 10,
'Retail' : 1,
'Stocks' : 25,
]
我只是节省了标签本身,但最近增加的数字,因为我需要知道排名/位置。因此,标签旁边的数字代表用该标签标记的文档集合中文档的排名。
它变得棘手的几个地方,但现在我只是想弄清楚我如何添加其他文件与一个或多个这些标签。假设我创建一个新文档并将其标记为“房屋”。它的等级需要设置为11,但我怎么知道这一点?
唯一的解决办法,我已经能够到目前为止发现是做的map/reduce要经过的记录,并找到最大值为标记,添加一个和保存。现在,大多数记录可能只有2-3个标签,但理论上可能有10-15个。无论哪种方式,似乎地图/减少将需要一个强大的努力,一旦有大量的标签和大量的记录...
有没有更简单的方法,或者我应该开始寻找另一种解决方案来解决这个问题?
编辑:
让我给你约我试图解决...我在幻灯片/轮播显示图像的问题,更详细一点。该幻灯片涵盖了不同的类别,因此使用上面的类别/标签,您可以查看所有图像,或仅查看来自住房,零售,股票等的图像。目前,我只有少数几个已定义的类别,但它相当这些可能会随着时间的推移而扩大。他们需要通过标签过滤,并按日期排序(最新的第一个)。
现在,直到这一点我一直在这样做。当我想在卡组中间选择任意图像时,问题就出现了。假设你想加载6个月前上传的“housing_chart.gif”。我不想加载6个月的图像以获得该图像(这基本上是我现在所做的)。相反,我想加载该特定图像,然后能够为下一个/上一个图像分页。
但为了在转盘上,以“分页”的图片,我必须知道的结果图像的位置......没有实际得到的所有结果和计数。所以我认为在他们身上放上一个等级就是要走的路,但也会导致其他问题。我不太喜欢创建另一个集合来存储行列的想法,但这可能是实现它的最有效的方式。
是的,通过这个标签文档,您可以轻松找到等级编号。如果你真的需要非规范化并在“主文档”中包含标签和等级编号,则可以像这样添加它,不需要大的搜索。 – oma 2011-05-25 14:59:23
得到所有健谈,并添加一些更多的背景,我想在这里解决上述问题的问题。谢谢! – 2011-05-26 15:27:35