Node.js 需要从$aggreagate组阶段返回x个文档

Node.js 需要从$aggreagate组阶段返回x个文档,node.js,mongodb,mongoose,aggregation-framework,Node.js,Mongodb,Mongoose,Aggregation Framework,如果我有一堆文件 {_id: mongoId, submittedTo: mongoId, viewCount: 2 } 如果我想将x个具有最高浏览量的文档数返回到最低每次提交次数。使用mongoose/mongodb的聚合,我将如何做到这一点 我从这个问题中学到了$first 但是当您需要为$group的_id返回多个文档时,它的用例似乎无效 到目前为止我有 {$sort: {viewCount: -1}}; {$group : {_id: '$submittedTo'}}; 但是我不知

如果我有一堆文件

{_id: mongoId,
submittedTo: mongoId,
viewCount: 2
}
如果我想将x个具有最高浏览量的文档数返回到最低每次提交次数。使用mongoose/mongodb的聚合,我将如何做到这一点

我从这个问题中学到了$first 但是当您需要为$group的_id返回多个文档时,它的用例似乎无效

到目前为止我有

{$sort: {viewCount: -1}};

{$group : {_id: '$submittedTo'}};

但是我不知道我还需要在小组阶段添加什么才能达到所需的效果。

尝试使用$limit获得第一个x结果

{$limit: x}

我不认为有一种好方法可以在一个聚合中同时覆盖所有提交的值。将提交给组的视图计数值集合的每个独立于其他组进行排序,以及独立于其他组限制每个组的结果数量,这将是困难的或不可能的。但是,使用find查询将一个
提交到
值非常容易:

db.collection.find({ "submittedTo" : <some id> }).sort({ "viewCount" : -1 }).limit(x)
db.collection.find({“submittedTo”:}).sort({“viewCount”:-1}).limit(x)