如果我有一堆文件

{_id: mongoId,
submittedTo: mongoId,
viewCount: 2
}


如果我想将xcount具有最高count的文档返回给每个SubmittedTo Lowiest。我如何使用mongoose / mongodb进行聚合?

我从这个问题中学到了$ first
Return a document with the max value on a number field using MongoDB aggregation,但是当您需要根据$ group的_id返回多个文档时,该用例似乎无效。

到目前为止,我有

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

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


但不知道我还需要添加到小组舞台上以达到所需的效果。

最佳答案

我认为没有一个好的方法可以在一次聚合中同时覆盖每个SubmittedTo值。独立于其他组对每个submittedTo组的viewCount值集合进行排序,或者独立于其他组限制每个组的结果数量将是困难的或不可能的。但是,使用查找查询对一个submittedTo值进行操作很容易:

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

关于node.js - 需要从$ aggregate组阶段返回x个文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27023826/

10-13 09:19