僧侣:如何获得最后的N条记录?

时间:2015-02-26 19:27:12

标签: mongodb monk

我无法找到记录的位置。默认情况下,find()操作将从头开始获取记录。

router.get('/chat/get-messages', function(req, res) {
    var db = req.db;
    var collection = db.get('chatMessages');
    collection.find({},{'limit':8},function(e,docs){
        if (e) return next(e);
        res.send(docs)
    });
});

如何获取N个最后插入的记录?

2 个答案:

答案 0 :(得分:2)

date降序排序以获取最后N条记录,然后在docs数组上调用reverse()以按升序排列它们:

collection.find({}, {sort: {date: -1}, limit: 8}, function(e, docs){
    if (e) return next(e);
    res.send(docs.reverse());
});

答案 1 :(得分:0)

好的,我找到了一个解决方法,我想做什么。

collection.find({},{sort: {"date": 1}},function(e,docs){
    if (e) return next(e);
    res.send(docs)
});

这将返回按日期排序的结果,然后我在客户端进行切片:

$.getJSON( '/chat/get-messages', function( data ) {
    data=data.slice(data.length -8, data.length);
    ...
});

我仍在等待实现这一目标的正确方法。