Database

[{languageId:"en",published:true,userId:1,publishedDate:ISODate(),lines:[{id:"123",text:"ABC"},{id:"567",text:"AKA"},{id:"890",text:"ZXZ"},{id:"891",text:"ZXZ"},{id:"892",text:"ZXZ"},{id:"893",text:"ZXZ"},{id:"894",text:"ZXZ"}]}]

Query

db.collection.aggregate([{$match:{"languageId":"en","published":{$exists:true,$ne:false}}},{$group:{_id:{"userId":"$userId"},"lastPoem":{$last:"$$ROOT"},"count":{$sum:1}}},{$addFields:{"lastPoem.lines":{$slice:["$lastPoem.lines",5]}}},{"$sort":{"lastPoem.publishedDate":-1}},{"$skip":0},{"$limit":10}])

Result