- 嗨,我有一个带查询的聚合查询,我需要从这个查找中投射特定的字段并对它们进行切片 . 这就是我到目前为止所做的 .
{
$lookup: {
from: 'users',
localField: 'users',
foreignField: '_id',
as: 'users',
}},
我添加了unwind语句
{
$unwind: {
path: '$users',
preserveNullAndEmptyArrays: true
}},
我添加了组声明
{ $group: { _id: { _id: '$_id', createdAt: '$createdAt', updatedAt: '$updatedAt' }, users: { $addToSet: '$users', } } },
并在我做的用户数组中投影特定字段:
{
$project: {
_id: '$_id._id',
createdAt: '$_id.createdAt',
updatedAt: '$_id.updatedAt',
// users: {
// $slice: [
// "$users",
// skip,
// limit
// ]
// },
users: {
$map: {
input: '$users',
as: 'user',
in: {
email: '$$user.email',
name: '$$user.name',
username: '$$user.username',
updatedAt: '$$user.updatedAt'
}
}
}
}},
我的问题是,我如何在这个范围内使用$ slice?
1 回答
我不知道 'legit' 是怎么回事,但我已经在 $group 中添加了 $addToSet 语句的字段,所以现在我可以使用 $slice 和 mapped fields .
现在我可以轻松地在 $project 声明中做 $slice .
如果有人有更好的解决方案,我想知道 .