的總數量排序:獲取的文件在列表的標籤,由下式給出的文件下面的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