我有以下聚合:
db.reports.aggregate({ $group: { _id: "$user", reports: { $push: {report: {properties: "$properties"} } }}}, { $project: { _id: 0, user: "$_id", reports: "$reports"} })
我想以某种方式限制推送到数组中的报告数量。IE 我想将报告限制为用户定义的值。1,5,10 等。意思是我希望在报告字段中包含 N 个报告(我将按时间戳排序)。现在我正在推送所有报告,不确定如何限制每个用户的报告数量。
我尝试了 $limit,但这并没有奏效,因为它限制了返回的用户数量,而不是推送到报告数组中的报告数量。
基本上我想按用户对我的报告进行分组,并且只包含一定数量的报告。我想尽早限制报告的数量,这样我就不必在整个管道中处理整个集合