的总数量排序:获取的文件在列表的标签,由下式给出的文件下面的MongoDB集合匹配
{
title : 'shirt one'
tags : [
'shirt',
'cotton',
't-shirt',
'black'
]
},
{
title : 'shirt two'
tags : [
'shirt',
'white',
'button down collar'
]
},
{
title : 'shirt three'
tags : [
'shirt',
'cotton',
'red'
]
},
...
你如何检索匹配的标签列表项的列表,按总数排序匹配标签?例如,给定的标签这个列表作为输入:
['shirt', 'cotton', 'black']
我想通过检索匹配标签的总数在递减顺序排列的项目:
item total matches
-------- --------------
Shirt One 3 (matched shirt + cotton + black)
Shirt Three 2 (matched shirt + cotton)
Shirt Two 1 (matched shirt)
在关系模式中,标签将成为一张单独的桌子,您可以加入这张桌子,统计比赛次数,并按次数排序。
但是,在Mongo ...?
似乎这种方法可以工作,
- 断裂输入标记成多个“IN”的语句
- 查询的项目“或”“荷兰国际集团共同标签输入
- 即其中(” ('cotton'IN items.tags)
- 这会返回,例如,“Shirt One”的三个实例,“Shirt Three”的两个实例等
- map/reduce that output
- map:emit(this._id,{...});
- 减少:数_id
- 敲定总出现:排序计总
但我不能就如何落实这是一个蒙戈查询清楚,或者如果这是连最有效的方法。
好像简单M/R作业。 – 2011-12-23 14:48:54
由于当前的实现缺乏适当的并行性,因此没有M/R在生产代码中很简单。事实上,在高吞吐量情况下可以完全避免m/r。 – 2011-12-23 18:27:16