nodejs + moongose按元素时间戳排序内部数组

时间:2018-01-29 17:04:39

标签: node.js mongodb sorting mongoose

我有以下架构:

  var VisionsystemSchema = new mongoose.Schema({
  linenumber: {
    type: String,
    index: true,
    unique: true
  },
  name: String,
  rois: [
    {
      name: String,
      history: [Date, Number]
    }
  ]
});

对于rois数组中的每个元素,我有一个带有[date,number]元组的历史值数组。我如何通过其Date first元素订购历史数组?

1 个答案:

答案 0 :(得分:2)

您可以使用以下聚合查询。

$unwind rois数组,然后按第一个元素排序文档,然后$group重新排序_id以获取排序数组。

db.col.aggregate([
  {"$unwind":"$rois"},
  {"$sort":{"rois.history.0":-1}},
  {"$group":{"_id":"$_id","rois":{"$push":"$rois.history"}}}
])