我有这样的小组:
{
"$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添加到$推送任何解决方案,那将是理想的吗?
答案 0 :(得分:1)
您可以在使用$slice
的$project
之后向您的管道添加$group
阶段,以便从累积的conversation
数组中获取最后5个元素每个文档:
{$project: {conversation: {$slice: ['$conversation', -5]}}}