如何根据另一个表的键对表中的响应进行排序?
例如: 我有一个名为用户数据的表。表中内容为:
{ _id:objectId, name:string, age:number}
现在我有另一个名为员工工资数据的表。表中内容为:
{ _id:objectId userId:objectId //ref to user totalSalary:number}
我想要的是,当我从员工工资中获取数据时,我想按用户名(在用户表中)或totalSalary(以用户提到的顺序输入的用户名)对结果进行排序
我正在使用 mongoose 8.4.5 如果有任何可以在 mongoose 中使用的查询,请告诉我。如果您更喜欢聚合管道,请给我一个代码示例,因为我是聚合管道的新手。
使用
lookup
进行聚合,然后 unwind
将结果按所需字段排序
下面是如何在 mongoose 中调用它
Sallary.aggregate([
{
"$lookup": {
"from": "user",
"localField": "userId",
"foreignField": "_id",
"as": "users"
}
},
{
"$unwind": "$users"
},
{
"$sort": {
"users.name": 1
}
}
]).exec((err, users) => {
if (err) return handleError(err);
console.log(users);
});
确保将架构名称替换为您的架构名称