【问题标题】:Mongoose find-query: Sort JSON-Array by DateMongoose 查找查询:按日期排序 JSON 数组
【发布时间】:2016-10-03 07:14:36
【问题描述】:

我尝试了这个 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 发送多条消息。 这是输出

【问题讨论】:

    标签: json sorting mongoose


    【解决方案1】:

    .sort({_id: -1})

    使用自动创建的_id,因为它有一个嵌入的日期。后来工作了。

    【讨论】:

      【解决方案2】:

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

      .sort({ date : -1 })
      

      试试这个:

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

      【讨论】:

      • 试过了,可悲的是也不管用。感觉它获取了参数但没有在那里排序或没有重新加载新数组。
      • 只是为了确定:您有多个具有相同id 属性的文档是有意的,对吧?您能否将查询中的结果列表(编辑或压缩,仅显示 message 属性就足够了)添加到您的问题中?
      • 已更新以获得更好的视图,感谢您的帮助。
      • @LinkM 数据看起来是按时间戳排序的吗?
      • 是的,但错误消息在顶部,最新存储的消息应该出现在顶部,现在默认情况下(由于存储顺序)最新的在底部.. 尝试使用 .sort({ 'message .timestamp' : 1 }) 也是如此,这应该会反转它,但没有任何反应。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 2020-12-16
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多