限制$推送聚合

时间:2016-12-01 13:44:37

标签: node.js mongodb aggregation-framework

我有这样的小组:

{
            "$group": {
                "_id": "$conversationId"
                "conversation": {
                    "$push": {"from": {
                            "firstName": "$fromObj.firstName",
                            "lastName": "$fromObj.lastName",
                            "title": "$fromObj.title",
                            "picture": "$fromObj.picture"

                        }
                        , "to": {
                            "firstName": "$toObj.firstName",
                            "lastName": "$toObj.lastName",
                            "title": "$toObj.title",
                            "picture": "$toObj.picture"
                        }
                        , "content": "$content",
                        "_id": "$_id",
                        "conversationId": "$conversationId",
                        "unreaded": "$unreaded"
                    }}

            }

        }

$push内部,我需要推送最后5个项目,我该怎么做?如果可以直接将$ limit添加到$推送任何解决方案,那将是理想的吗?

1 个答案:

答案 0 :(得分:1)

您可以在使用$slice$project之后向您的管道添加$group阶段,以便从累积的conversation数组中获取最后5个元素每个文档:

{$project: {conversation: {$slice: ['$conversation', -5]}}}