[英]mongoose - getting latest records sorted by date
我目前有以下代码:
var query = ClimateData.find({ device: req.params.device })
.sort({datetime: -1})
.limit(10)
.exec(function(err, data) {
res.json(data);
});
这样就可以获得最新的 10 条记录,但从最新的开始。 我实际上需要按日期排序的日期,所以从 10 条最新记录中最旧的开始。
两个.sort()
调用(如下)不起作用。 刚得到的结果是我有 10 条记录,但不是最新的。
var query = ClimateData.find({ device: req.params.device })
.sort({datetime: -1})
.limit(10)
.sort({datetime: 1})
.exec(function(err, data) {
res.json(data);
});
在 find() 方法中没有办法做到这一点,
find()
结果后在客户端排序:你可以用你的客户端编程语言(nodejs)来做到这一点,比如:
var query = ClimateData.find({ device: req.params.device })
.sort({datetime: -1})
.limit(10)
.exec(function(err, data) {
// SORT FUNCTION
data.sort((a, b) => a.datetime < b.datetime ? -1 : (a.datetime > b.datetime ? 1 : 0))
res.json(data);
});
aggregate()
: 或尝试第二个选项aggregate()
方法,
$match
你的查询条件$sort
按datetime
时间降序排序$limit
你的文件$sort
按datetime
时间升序排序var query = ClimateData.aggregate([
{ $match: { device: req.params.device } },
{ $sort: { datetime: -1 } },
{ $limit: 10 },
{ $sort: { datetime: 1 } }
]).exec(function(err, data) {
res.json(data);
});
var query = ClimateData.find({ device: req.params.device })
.sort({datetime: -1,_id:1})
.limit(10)
.exec(function(err, data) {
res.json(data);
});
或以下
var query = ClimateData.find({ device: req.params.device })
.sort({datetime: -1})
.limit(10)
.sort({_id: 1})
.exec(function(err, data) {
res.json(data);
});
尝试这个:
var query = ClimateData.find({ device: req.params.device })
.sort([["_id", 1], ["datetime", -1]])
.limit(10)
.exec(function(err, data) {
res.json(data);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.