填充和排序问题

时间:2016-10-27 10:54:48

标签: node.js mongodb mongoose

我有一个Mongoose查询的小问题。我试图用其他两个引用的集合(员工和班次类型)来填充一系列班次。

一切都很好,问题是当我尝试按"employee.lastName"键排序时。

这是我的代码:

Shift
  .find()
  .populate("employee", "-_id lastName firstName userID")
  .populate("shift", "-_id shiftID")
  .select("employee date shift")
  .sort({ "employee.lastName": 1, "date": 1 })
  .exec(function(err, shifts) {
    res.status(200).json(shifts);
  });

这是一个结果:

{
  "_id": "5811b23d7b32ae2b59ce5890",
  "shift": {
    "shiftID": "MO123"
  },
  "date": "2016-10-10T00:00:00.000Z",
  "employee": {
    "firstName": "JOE",
    "lastName": "AVERAGE",
    "userID": "AJ456"
  }
},

我无法按"employee.lastName"键对结果进行排序,只是它没有按预期工作。

有没有人有线索?

1 个答案:

答案 0 :(得分:-1)

您无法对填充字段对象进行排序。请在填充上对其进行排序

Shift
  .find()
  .populate("employee", "-_id lastName firstName userID", null, { sort: { 'lastName': 1 } })
  .populate("shift", "-_id shiftID")
  .select("employee date shift")
  .sort({"date": 1 })
  .exec(function(err, shifts) {
    res.status(200).json(shifts);
  });