MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose - намерете последното съобщение от всеки потребител

Използвайте рамка за агрегиране, където вашите етапи на конвейер имат $match , $sort , $group и $project изрази:

Message.aggregate(
    [
        // Matching pipeline, similar to find
        { 
            "$match": { 
                "to": req.user.username
            }
        },
        // Sorting pipeline
        { 
            "$sort": { 
                "created": -1 
            } 
        },
        // Grouping pipeline
        {
            "$group": {
                "_id": "$from",
                "message": {
                    "$first": "$message" 
                },
                "created": {
                    "$first": "$created" 
                }
            }
        },
        // Project pipeline, similar to select
        {
             "$project": { 
                "_id": 0,
                "from": "$_id",
                "message": 1,
                "created": 1
            }
        }
    ],
    function(err, messages) {
       // Result is an array of documents
       if (err) {
            return res.status(400).send({
                message: getErrorMessage(err)
            });
        } else {
            res.json(messages)
        }
    }
);

Ако req.user.username = "admin" , с вашата примерна колекция, тогава резултатът е:

{
    "result" : [ 
        {
            "message" : "message4",
            "created" : "2015-04-01T11:59:21.005Z",
            "from" : "user2"
        }, 
        {
            "message" : "message5",
            "created" : "2015-04-01T11:59:29.971Z",
            "from" : "user1"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Родният драйвер на MongoDB Node.js тихо поглъща изключение `bulkWrite`

  2. Как да върнете данни от MongoDB

  3. Създадени от MongoDB файлове

  4. Как да направя повече от/по-малко от използването на MongoDB?

  5. Как да филтрирате масив в Mongodb документ с помощта на Spring