我有一个包含这样文件的集合:
{
"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 :(得分: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}
)