Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 嵌套对象数组mongoose中的排序_Node.js_Mongodb_Mongoose - Fatal编程技术网

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"
      }
    }
  }
])