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

マングースですべてをクエリして合計します

    AggregationPipeline を使用できます 計算フィールドを結果に追加します。 mongoを使用したいくつかの例を以下に示します。 シェルですが、Mongooseの Aggregate()ヘルパー の構文 似ています。

    たとえば、(ユーザードキュメントごとの)合計を計算するには、<を使用できます。 code> $ add 式 $ project ステージ

    db.user.aggregate(
        // Limit to relevant documents and potentially take advantage of an index
        { $match: {
            user_id: "foo"
        }},
    
        { $project: {
            user_id: 1,
            total: { $add: ["$user_totaldocs", "$user_totalthings"] }
        }}
    )
    

    複数のドキュメントの合計を計算するには、 $groupを使用する必要があります。 ステージ $ sum アキュムレータ 、例:

    db.user.aggregate(
        { $group: {
            _id: null,
            total:       { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
            totaldocs:   { $sum: "$user_totaldocs" },
            totalthings: { $sum: "$user_totalthings" }
        }}
    )
    

    totalを1つだけにしたい場合があります 分野; totaldocsに追加しました およびtotalthings 複数のフィールドを計算する例として。

    グループ_id null $ groupに渡されたすべてのドキュメントの値を結合します ステージですが、ここで他の基準を使用することもできます( user_id によるグループ化など) 。



    1. モンゴ-ルビー接続の問題

    2. Spring DataMongoDBBigDecimalのサポート

    3. MongoドキュメントをIDでグループ化し、タイムスタンプで最新のドキュメントを取得します

    4. pymongoのReplicaSetConnectionの使用:時々IndexErrorを取得します:カーソルにそのような項目はありません