Mongo:将返回的logging限制在切片上的递增计数

即时通讯在节点项目中使用mongoose,我有以下查询:

var query = Model.aggregate( { $match: { id: id } }, { $sort: { created: -1 } }, { $project: { name: true, number: true, created: true, status: true, time: true, array_data: { $slice: ['$array_data', 5] } } } ) 

我以为切片会根据array_data字段中有多less条logging将我的整个logging​​限制为5,但是它只会限制返回的array_data元素的数量。

我希望做的是:

可以说,我的模型中的logging1在array_data中有10个元素,在我的模型中有2个logging在array_data中有15个元素。

我希望能够切片或使用一些其他的function,所以当我查询我的模型与“限制”20它返回第一个集合与其所有10个元素array_data与第二个集合及其前10 array_data等于20的“极限”。

Mongo可以吗?

使用unwind解构文档,然后限制它并再次分组

 var query = Model.aggregate( { $match: { id: id } }, { $sort: { created: -1 } }, { $unwind: '$array_data' }, { $limit: 20 }, { $group: { _id: { name:'$name', number: '$number', created: '$created', status: '$status', time: '$time' }, array_data: { $push: '$array_data' } } }, { $project: { name: '$_id.name', number: '$_id.number', created: '$_id.created', status: '$_id.status', time: '$_id.time', array_data: 1, _id: 0 } } )