Mongoose查找查询:按日期排序JSON-Array

时间:2016-06-03 09:26:44

标签: json sorting mongoose

我尝试了这个mongoose-query并且不知道为什么这种方法不起作用(在stackoverflow上找到语法所以不知道我再次做错了什么)。 试图用find取代exec,也没办法。

model.find({'id':req.params.id}).sort({date:-1}).limit(10).exec(function(err, jsonarray){...};

我的架构和jsondata就是这样:

var messageSchema  = new Schema({
  id: Number,
  name: Schema.Types.Mixed,
  type: Schema.Types.Mixed,
  message:
        {
            messagetype: String,
            timestamp: Number,
            messagestatus: String
        }
}, {collection: 'test'});

否则可以通过message.timestamp对其进行排序,但我不知道如何... 提前谢谢。

甚至尝试过这样......我被卡住了。

json.sort(function(a, b) {
return parseFloat(a.message.timestamp) - parseFloat(b.message.timestamp);
});

更新:数据看起来像这样:

[ { id: 215456740,
  name: 'Max',
  type: 'freezer',
  _id: 57513933c25d06630a3ef887,
  __v: 0,
  message: 
   { messagetype: 'Standard message',
     timestamp: 1464940851375,
     messagestatus: 'red'
    } 
},
 { id: 215456740,
name: 'Tobi',
type: 'center',
_id: 5751393bc25d06630a3ef888,
__v: 0,
   message: 
 { messagetype: 'Standard message',
   timestamp: 1464940859265,
   messagestatus: 'white'
  } 
}]

是的,它是一个Id的有意,多条消息。 这是输出

2 个答案:

答案 0 :(得分:0)

查询正在对不存在的属性date进行排序:

.sort({ date : -1 })

相反,试试这个:

.sort({ 'message.timestamp' : -1 })

答案 1 :(得分:0)

.sort({_ id:-1})

使用自动处理的_id,因为它具有嵌入的日期。事后工作。