排序Mongo子数组

时间:2018-12-23 22:15:10

标签: arrays mongodb mongoose aggregation-framework

[
   {

    "t": "Sample Question",
    "d": "2018-12-23T21:21:03.430Z",
    "aa": [
        {

            "q": 1,
            "n": "5bee73accda38",
            "iU": "5bee73accda38/5c1f3d7341977/1.mp4"
        },
        {

            "q": 4,
            "n": "5bee73accda38",
            "iU": "5bee73accda38/5c1f3d7341977/1.mp4"
        }
    ]
}]

我是Mongo的新手,试图在MongoDB中对SubArray(降序)进行排序,但仍然无法基于子数组中的“ q”(降序)索引进行排序。

这是我尝试过的但没有成功

Question.find({}, function(err, question) {

if (err)
  res.send(err); 

}).sort({'d':-1,'aa.q':-1 }).skip(page).limit(10);

1 个答案:

答案 0 :(得分:1)

您始终可以使用$aggregate并在$unwind内依次使用$sort$group

db.collection.aggregate([
  { $unwind: "$aa" },
  { $sort: { "aa.q": -1 }},
  { $group: {
      _id: "$_id",
      "t": { $first: "$t" },
      "d": { $first: "$d" },
      "aa": { $push: "$aa" }
    }
  }
])

查看working here