mongodb节点组集合

时间:2018-11-13 08:01:08

标签: node.js mongodb aggregation-framework

我正试图得到这个; 我找到了一些示例,但没有完整的示例,

我所拥有的是一个集合“消息”。 所有消息都有一个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) {

0 个答案:

没有答案