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

MongoDBAggregationのaddField操作内での$countの使用

    合計数は常に1つのドキュメントの結果になるため、が必要です。 $ facet 複数の集計パイプラインを実行してから、結果をマージします。通常のパイプラインに単純な$projectが含まれているとします。 結果を$countとマージしたい 。以下の集計を実行できます:

    db.col.aggregate([
        {
            $facet: {
                totalCount: [
                    { $count: "value" }
                ],
                pipelineResults: [
                    {
                        $project: { _id: 1 } // your regular aggregation pipeline here 
                    }
                ]
            }
        },
        {
            $unwind: "$pipelineResults"
        },
        {
            $unwind: "$totalCount"
        },
        {
            $replaceRoot: {
                newRoot: {
                    $mergeObjects: [ "$pipelineResults", { totalCount: "$totalCount.value" } ]
                }
            }
        }
    ])
    

    $facetの後 ステージでは、このような単一のドキュメントを取得します

    {
        "totalCount" : [
            {
                "value" : 3
            }
        ],
        "pipelineResults" : [
            {
                "_id" : ObjectId("5b313241120e4bc08ce87e46")
            },
            //....
        ]
    }
    

    次に、 $unwind を使用する必要があります 配列を複数のドキュメントに変換し、 $ replaceRoot $mergeObjects を使用 定期的なパイプラインの結果をルートレベルに昇格させるため。




    1. マングースはインターネットなしでは接続できません

    2. 純粋なJSバージョンを使用して、c++bson拡張機能を読み込めませんでした

    3. DjangoとExpress.jsアプリケーションのRedisでセッションストアを共有する

    4. mongoDB C#ドライバーを使用して、runCommandを発行するにはどうすればよいですか?