首页 > 解决方案 > 排序 Mongo 子数组

问题描述

[
   {

    "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(Descending) 进行排序,但仍然无法实现基于子数组中的“q”(降序)索引的排序。

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

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

if (err)
  res.send(err); 

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

标签: arraysmongodbmongooseaggregation-framework

解决方案


您始终可以使用$aggregateand inside $unwind$sort然后$group

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

看到它在这里工作


推荐阅读