当年话下
时代变了,我相信你能达到什么OP是通过聚合与要求$sort,$group和$project。对于我的系统,我还需要从users集合中获取一些用户信息。希望这也可以回答有关此问题。下面是一个聚合管道。最后三个对象(排序,组和项目)是处理总计数,然后提供分页功能的对象。db.posts.aggregate([ { $match: { public: true }, { $lookup: { from: 'users', localField: 'userId', foreignField: 'userId', as: 'userInfo' } }, { $project: { postId: 1, title: 1, description: 1 updated: 1, userInfo: { $let: { vars: { firstUser: { $arrayElemAt: ['$userInfo', 0] } }, in: { username: '$$firstUser.username' } } } } }, { $sort: { updated: -1 } }, { $group: { _id: null, postCount: { $sum: 1 }, posts: { $push: '$$ROOT' } } }, { $project: { _id: 0, postCount: 1, posts: { $slice: [ '$posts', currentPage ? (currentPage - 1) * RESULTS_PER_PAGE : 0, RESULTS_PER_PAGE ] } } }])