问题描述
我正在尝试按引用文档中的值对文档中的文档引用内部数组进行排序。我想在每次运行查询时都这样做,所以如果我可以使用查询 sort() 函数或理想的 post-find 中间件来做到这一点(而不是让调用 find 的代码需要在事实)。
{
// details excluded...
categories:[{
type: mongoose.Schema.Types.ObjectId,ref: "Category"
}]
}
Category 架构如下所示(不相关的细节除外):
{
// details excluded...
name: {type:String,required:true},sortOrder: Number
}
我想对 ModSet 进行查找查询,作为查询的一部分,它应该始终按 sortOrder 对 categories 数组进行排序em> 在填充的 Category 文档中。
{
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: "2"},{name: "categoryA",sortOrder: "5"}
]
}
解决方法
您可以通过以下方式进行。
User.find({})
.populate('categories','name sortOrder',null,{ sort: { 'sortOrder': -1 } })