在MongoDB中使用push对嵌套数组进行排序?

时间:2019-12-23 10:25:55

标签: javascript node.js mongodb mongoose aggregation-framework

考虑查询

  EightWeekGamePlan.aggregate(
      [
        {
          $group: {
            _id: {
              LeadId: "$LeadId",
              BusinessName: "$BusinessName",
              PhoneNumberMasque: "$PhoneNumberMasque",
              City: "$City",
              Rooms: "$Rooms",
              dateToString: { format: "%Y-%m-%d", date: "$InserDate" }
            },
            Weeks: {
              $push: {
                Week: "$Week",
                Status: "$Status",
                InsertDate: "$InsertDate"
              },
              // $sort: { Week: 1 }  // doesn't work
            }
          }
        }
      ]

如何用Weeks对嵌套数组Week进行排序(这是1到8之间的数字)?

我尝试使用$sort: { Week: 1 },但查询没有成功。

1 个答案:

答案 0 :(得分:2)

$sort阶段之前使用$group

EightWeekGamePlan.aggregate([
  { $sort: { Week: 1 }},
  { $group: {
    _id: {
      LeadId: "$LeadId",
      BusinessName: "$BusinessName",
      PhoneNumberMasque: "$PhoneNumberMasque",
      City: "$City",
      Rooms: "$Rooms",
      dateToString: { format: "%Y-%m-%d", date: "$InserDate" }
    },
    Weeks: {
      $push: {
        Week: "$Week",
        Status: "$Status",
        InsertDate: "$InsertDate"
      }
    }
  }}
])