mongodb 中的跨表排序

问题描述 投票:0回答:1

如何根据另一个表的键对表中的响应进行排序?

例如: 我有一个名为用户数据的表。表中内容为:

{ _id:objectId, name:string, age:number}

现在我有另一个名为员工工资数据的表。表中内容为:

{ _id:objectId userId:objectId //ref to user totalSalary:number}

我想要的是,当我从员工工资中获取数据时,我想按用户名(在用户表中)或totalSalary(以用户提到的顺序输入的用户名)对结果进行排序

我正在使用 mongoose 8.4.5 如果有任何可以在 mongoose 中使用的查询,请告诉我。如果您更喜欢聚合管道,请给我一个代码示例,因为我是聚合管道的新手。

node.js typescript mongodb mongoose aggregate
1个回答
0
投票

使用

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);
});

确保将架构名称替换为您的架构名称

© www.soinside.com 2019 - 2024. All rights reserved.