javascript - 如何在 MongoDB 中使用集合?

标签 javascript node.js mongodb mongodb-query aggregation-framework

我们在 Node.JS 中有以下查询

mongo.connect('mongodb://XXX:XXX@ds054XXX.mlab.com:54289/XXXdb', function (err, db) {
    var collection = db.collection('chatmessages')
    var stream = collection.find().sort({ _id: -1 }).limit(20).stream();
    stream.on('data', function (chat) { 
        socket.emit('user message', chat.content, chat.dateCreated); 
    });
});

如您所见,查询是最近输入的 20 条记录的集合。但是从这个结果中,我们想再次使用 _id 中的 1,所以在列表中我们将有 ID 55 - 75 例如(订单)。所以最后一个总是在底部。

我们如何再次实现这一目标?

最佳答案

您需要使用聚合框架。

mongo.connect('mongodb://XXX:XXX@ds054XXX.mlab.com:54289/XXXdb', function (err, db) {
    var collection = db.collection('chatmessages')
    var stream = collection.aggregate([
        { "$sort": { "_id": -1}}, 
        { "$limit": 20 }, 
        { "$sort": { "_id": 1 }}
    ]);
    stream.on('data', function (chat) { 
        socket.emit('user message', chat.content, chat.dateCreated); 
    });
});

关于javascript - 如何在 MongoDB 中使用集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41583574/

相关文章:

javascript - 如何设置元素水平增长而不是换行?

node.js - 使用 npm 和 Node 下载依赖项时出现错误 MSB8007

javascript - 如何在 Windows 中使用 NodeJS 执行 After Effects JSX 脚本

javascript - 如何添加分页以导航博客文章页面(Node/Express)

javascript - 为什么 Chrome 似乎在异步请求 Javascript 文件?

javascript - 对数组进行排序而不改变顺序

javascript - 仅在 Safari 中发布 jQuery ajax 时出现 400 错误请求

google-maps - Mongodb geo在谷歌地图范围内

node.js - nodemon - 应用程序崩溃 - 启动前等待文件更改

java - 如何使用 Spring RabbitMQ 和 MongoDB 捕获连接异常?