获取与给定数组

时间:2017-04-02 02:32:41

标签: mongodb mongodb-query

我有一个包含这样文件的集合:

{
   "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];

我怎么能这样做?

1 个答案:

答案 0 :(得分: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}

)