sql >> データベース >  >> NoSQL >> MongoDB

マングース-各ユーザーからの最後のメッセージを検索

    パイプラインステージに<がある集約フレームワークを使用しますcode> $ 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. マルチコアCPUでのRedisのパフォーマンス

    2. mongodb集約パイプライン内でJavascriptオブジェクトを使用するにはどうすればよいですか?

    3. Springデータmongodbがmongodb接続を閉じていない

    4. Mongodb:$またはfind()で使用すると、一致したフィルターを返します