Node.js 嵌套对象数组mongoose中的排序
我有这个函数返回的数据集合Node.js 嵌套对象数组mongoose中的排序,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有这个函数返回的数据集合 const game=wait game.findOne({name:id}) 现在我想按照分数对球员进行分类,我所做的是 const game=wait game.findOne({name:id}).sort({'players.points':1}) 我是从哪里得到的 我期待的是这个 { "_id": "5f8e51e188e8bc24ff8b85e4", "name": "stars
const game=wait game.findOne({name:id})
现在我想按照分数对球员进行分类,我所做的是
const game=wait game.findOne({name:id}).sort({'players.points':1})
我是从哪里得到的
我期待的是这个
{
"_id": "5f8e51e188e8bc24ff8b85e4",
"name": "stars",
"players": [
{
"_id": "5f961d850965854110fce6a5",
"name": "juliannn",
"points": 0
},
{
"_id": "5f961dec0965854110fce6a6",
"name": "Julian",
"points": 0
},
{
"_id": "5f961df70965854110fce6a7",
"name": "Matias",
"points": 0
},
{
"_id": "5f961e070965854110fce6a8",
"name": "Mariano",
"points": 11
}
],
"description": "Pick 1 or more numbers that sum to the number of stars",
"__v": 0
}
我遗漏了什么吗?您需要使用聚合来创建数组
{
"_id": "5f8e51e188e8bc24ff8b85e4",
"name": "stars",
"players": [
{
"_id": "5f961e070965854110fce6a8",
"name": "Mariano",
"points": 11
},
{
"_id": "5f961d850965854110fce6a5",
"name": "juliannn",
"points": 0
},
{
"_id": "5f961dec0965854110fce6a6",
"name": "Julian",
"points": 0
},
{
"_id": "5f961df70965854110fce6a7",
"name": "Matias",
"points": 0
}
],
"description": "Pick 1 or more numbers that sum to the number of stars",
"__v": 0
}
工作
db.collection.aggregate([
{
$match: {
_id: "5f8e51e188e8bc24ff8b85e4"
}
},
{
$unwind: "$players"
},
{
$sort: {
"players.points": -1
}
},
{
$group: {
_id: "$_id",
name: {
$first: "$name"
},
players: {
$push: "$players"
}
}
}
])