Невозможно выполнить сортировку по дате с помощью агрегации $unwind в mongodb

#node.js #mongodb #mongoose #aggregation-framework

#node.js #mongodb #мангуст #агрегация-фреймворк

Вопрос:

Я реализовал разбивку на страницы на стороне сервера. Сортировка не работает по дате (remixers.details.request.at ). Я использую $unwind для деконструкции массива, а затем поиска, пропусков, ограничения. Это мой запрос:

     await Brief.aggregate([
    {
      $lookup: {
        from: "genres",
        localField: "genres",
        foreignField: "_id",
        as: "genres",
      },
    },
    {
      $lookup: {
        from: "territories",
        localField: "territories",
        foreignField: "_id",
        as: "territories",
      },
    },
    {
      $lookup: {
        from: "users",
        localField: "briefAgent.agentId",
        foreignField: "_id",
        as: "briefAgent.agentId",
      },
    },
    {
      $lookup: {
        from: "originaltracks",
        localField: "originalTracksID",
        foreignField: "_id",
        as: "originaltrackdetail",
      },
    },
    {
      $addFields: {
        originalTracksID: { $arrayElemAt: ["$originaltrackdetail", 0] },
      },
    },
    { $unwind: "$remixers" },
    { $sort: { "remixers.details.request.at": -1 } },
    {
      $project: {
        originaltrackdetail: 0,
      },
    },
    { $skip: skip },
    { $limit: PAGE_SIZE }`
  ])
 

Редактировать:
brief имеет массив remixers, который указывает на другую коллекцию remixerProfile и получает данные соответственно
Вот моя краткая модель схемы:

 new mongoose.Schema(
  {
    uid: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
      required: [true, "User id is Required"],
    },
    briefName: {
      type: String,
      trim: true,
      required: [true, "Brief Name is Required"],
    },
    remixers: {
      default: undefined,
      type: Array,
      _id: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "RemixerProfile",
      },
      
      requestStatus: {
        type: Boolean,
        default: false,
      },
      requestedAt: {
        type: Date,
      },
      requestStatusDisplay: {
        type: String,
      },
      requestNote: {
        type: String,
      },
    },
    selectionMax: {
      type: Number,
    },
    originalTracksID: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "originalTracks",
    },
    details: {
      type: Object,
      request: {
        type: Object,
      },
    },
  },
  {
    versionKey: false,
    timestamps: { createdAt: "created", updatedAt: "updated" },
  }
);
 

Кто-нибудь может мне помочь?

Комментарии:

1. пожалуйста, добавьте образец документа или структуру схемы в свой вопрос.

2. Откуда remixers берется?

3. Я отредактировал и добавил краткую схему