我正试图得到这个; 我找到了一些示例,但没有完整的示例,
我所拥有的是一个集合“消息”。 所有消息都有一个user_id和一个'reference'+其他字段。
我可以在user_id上进行搜索,但是每次对话都可能有1条消息或100条消息。
我只想在每次对话中获取最新消息。
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://url:27017/",
{ useNewUrlParser: true },
function(err, database) {
if(!err) {
db = database.db('schoolpoint_connections');
}
});
db.collection('messages')
.find({"user_id": student.student_ref })
.toArray(function(err, records) {
res.send(JSON.stringify(response));
});
一些示例显示:aggregate(),但我不确定如何使用:
db.collection('messages')
.find({"user_id": student.student_ref })
.aggregate('reference') .....
失败。
我也找到了这种方法:但是没有关于如何使用它的解释: https://docs.mongodb.com/manual/reference/operator/aggregation/sort/
基于“引用”的汇总,并根据“ date_sent”进行排序以获取最新的..
先谢谢了。
根据提供的链接,可以有人分享我如何将其集成到我的场景中;
db.aggregate([
{ $sort: {"reference":-1, "date_sent": -1} },
{
$group: {
_id : "$reference",
date_sent: {$last: "$date_sent" },
id : {$first: "$_id"}
}
},
{ $project: { _id: "$id", reference: "$reference", date_sent: 1 } }
]).collection('messages')
.find({"user_id": user_id })
.toArray(function(err, records) {