0

我正在尝试通过引用文档中的值对文档中的文档引用的内部数组进行排序。我希望每次运行查询时都这样做,所以如果我可以使用查询 sort() 函数或理想的后查找中间件来执行此操作(而不是让调用 find 的代码需要在事实)。

我有一个ModSet的模式,如下所示:

{
    // details excluded...

    categories:[{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Category"
    }]
}

类别架构如下所示(不相关的详细信息除外):

{
    // details excluded...

    name: {type:String, required:true},
    sortOrder: Number
}

我想对ModSet进行查找查询,作为查询的一部分,它应该始终按填充的类别文档中的sortOrder对类别数组进行排序。

例如,今天我运行查找并填充查询并返回以下文档:

{
    categories: [
        {name: "categoryA", sortOrder: "5"},
        {name: "categoryB", sortOrder: "3"},
        {name: "categoryC", sortOrder: "1"},
        {name: "categoryD", sortOrder: "4"},
        {name: "categoryE", sortOrder: "2"}
    ]
}

我想得到的是(按categories.sortOrder排序):

{
    categories: [
        {name: "categoryC", sortOrder: "1"},
        {name: "categoryE", sortOrder: "2"},
        {name: "categoryB", sortOrder: "3"},
        {name: "categoryD", sortOrder: "4"},
        {name: "categoryA", sortOrder: "5"}
    ]
}
4

1 回答 1

0

您可以通过以下方式做到这一点。

User.find({})
  .populate('categories', 'name sortOrder', null, { sort: { 'sortOrder': -1 } })
于 2021-03-20T16:50:28.053 回答