我们在 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/