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

Mongodbは、配列フィールドのサイズを合計します

    $groupを含めます $projectの後のオペレーターパイプラインステージ 次の手順:

    db.profil.aggregate([
       { "$match":{ "typ": "Organisation" } },
       { "$project": {
             "fooos": { "$size": "$foos" }
       } },
       { "$group": {
           "_id": null,
           "count": {
               "$sum": "$fooos"
           }
       } }
    ])
    

    これにより、前の $projectからのすべての入力ドキュメントがグループ化されます ステージングし、アキュムレータ式を適用します $sum fooosで グループ内のフィールドで合計を取得します(最後の例を使用):

    これは、 $projectをバイパスして実行することもできます。 パイプラインとして:

    db.profil.aggregate([
       { "$match": { "typ": "Organisation" } },
       { "$group": {
           "_id": null,
            "count": {
                "$sum": { "$size": "$foos" }
            }
        } }
    ])
    

    出力

    /* 0 */
    {
        "result" : [ 
            {
                "_id" : null,
                "count" : 24
            }
        ],
        "ok" : 1
    }
    


    1. MongoDB:無条件の更新?

    2. MongoDB $ push

    3. 値と条件でグループ化

    4. Max Attempts Exceeded Exception queuelaravel