在我的Task模式中,我有如下字段:
{
name: String
},
{
user: ObjectID
}
我需要对任务进行排序。如果我想按name
字段进行排序,这很简单:
await Tasks.find().sort({name: 1})
这是可行的。但问题是当我想按user.name
排序时。要从User获取字段,我可以填充它们,因此:
await Tasks.find().populate('user', 'name').sort({'user.name': 1})
它不起作用。我不能按populate
函数添加的字段排序。我在文档和其他用户的问题中搜索了很多。我发现我可以将排序选项传递给populate
函数,但它也不起作用。我猜它会对填充字段中的字段排序。
当我尝试使用聚合和查找时,如下所示:
Tasks.aggregate([{ $lookup: {
{
from: 'User',
localField: 'user',
foreignField: '_id',
as: 'someField'
}}}])
它返回someField: []
有人能帮帮我吗?谢谢!
1条答案
按热度按时间sg3maiej1#
在
aggregate
查询中,您应该使用集合的真实的名称来引用集合,而不是使用模型名称。因此,它应该是from: 'users'
而不是from: 'User'
: