gpt4 book ai didi

javascript - 使用 Mongoose.js 按嵌套数组中的字段排序

转载 作者:可可西里 更新时间:2023-11-01 10:43:21 26 4
gpt4 key购买 nike

鉴于下面的数据结构(基于我的模型),我将如何使用 mongoose 按 cars.year 按 desc 顺序对集合进行排序?因此,首先我在汽车数组中找到最大年份,然后按它对集合进行排序。

{ "_id" : 1234,
"dealershipName": "Eric’s Mongo Cars",
"cars": [
{"year": 2013,
"make": "10gen",
"model": "MongoCar",},
{"year": 1985,
"make": "DeLorean",
"model": "DMC-12",}
]
},
{ "_id" : 1235,
"dealershipName": "Eric’s Mongo Cars",
"cars": [
{"year": 2015,
"make": "10gen",
"model": "MongoCar",},
{"year": 12001,
"make": "DeLorean",
"model": "DMC-12",}
]
}

我尝试使用聚合函数进行类似的操作,但是 $unwind 为 cars 数组中的每个元素复制了我的结果。

MyModel
.aggregate([{
$unwind: "$cars"
}, {
$project: {
...
year: '$cars.year',
}
}, {
$sort: {
year: -1
}
}])
.exec(function ...)

是否有更好或更有效的方法来执行此操作?

预先感谢您的帮助。

最佳答案

您正在寻找的是按数组中的字段排序时的标准行为。

MyModel.find().sort('-cars.year').exec(function(err, docs) {...});

这将使用每个文档的 cars 元素中 year 的最大值对文档进行降序排序。

升序排序时,取最小值。

关于javascript - 使用 Mongoose.js 按嵌套数组中的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com