2015-05-27 44 views
-1

我試圖找到問題的解決方案,但沒有得到任何進一步的信息。Mongoose在數組中具有相似值的文檔聚合

我有我收集了一些文件,每個都包含了一些值的數組:

[{id:0,arr:[1,2,3,4]},{id:1,arr:[4,5,6,7]},{id:2,arr:[3,7,8]}] 

我想建立一個聚合管道,這將允許我爲了利用相似性排序的文件一個給定的陣列,諸如:

var values = [1,3]; 

將導致:

[{id:0,arr:[1,2,3,4],similarity:2},{id:2,arr:[3,7,8],similarity:1}] 

任何想法?

回答

0

我做了一些更多的挖掘,找到了解決方法:

aggregate([ 
    {$match: {'arr':{$in:values}}}, 
    {$unwind: "$arr"}, 
    {$match: {'arr':{$in:values}}}, 
    {$group: { 
    _id:'$_id', 
    matches: {"$sum": 1} 
    }}, 
    {$sort: {matches:-1}}, 
    {$limit:limit} 
], function(err, result) { 
    ... 
}); 

訣竅是添加第二場比賽,這將消除不相關的數值數組中,並做了剩餘價值的簡單計數。

相關問題