Mongoose不会对的参数进行任何基于模式的转换
aggregate,因此您需要将
user.follow字符串ID数组转换为中的ObjectId数组
$match:
{$match: { _id: { $in: user.follow.map(function(id){ return new mongoose.Types.ObjectId(id); })}}},注意:请勿
mongoose.Schema.Types.ObjectId用于铸造。 不起作用。
您还应该将其移至
$match管道的开头,以提高效率。
更新
另一个问题是您需要使用
$project运算符,而不是仅
{imagen:true}在管道中包括一个普通对象。将所有内容放在一起并重新排序以建立更有效的管道,这对我的数据非常有用:usermodel.aggregate( {$match: { _id: { $in: user.follow.map(function(id){ return new mongoose.Types.ObjectId(id); }) }}}, {$project: {imagen: true}}, {$unwind: '$imagen'}, {$sort: {'imagen.date': 1}}, function (err, images){ ...


