2017-04-02 48 views
0

我有這樣的與文檔的集合文件:獲取其中數量最多的項目從給定的陣列相匹配

{ 
    "User": { _id: 1, UserName: "username", DisplayName: "DisplayName" }, 
    "Interests": [1, 4, 7, 25, 30, 34, 46], 
    "MinAge": 11, 
    "Title": "ad title", 
    ... 
} 

我想選擇其中數量最多的利益,從給定陣列相匹配的10個文件,如:

array = [1,7, 30, 33, 38, 46, 55]; 

我該怎麼做?

回答

0

您可以通過展開和分組來實現它。你將不得不在唯一標識符上進行分組。

db.colName.aggregate(
    {$unwind: '$Interests'}, 
    {$match: {Interests: {$in: [1,7, 30, 33, 38, 46, 55]}}}, 
    {$group: {_id: '$User.UserName', count: {$sum:1}}}, 
    {$sort: {count: -1}}, 
    {$limit: 10} 

) 
+0

如果「用戶」也是一個文檔並且當前文檔具有更多屬性呢?你的答案會起作用嗎?我已經更新了你的問題。 –

+0

我得到了「$ unwind不支持」。 –

+0

mongo版本,在3.2中引入了unwind – sidgate

相關問題