sql >> Database >  >> NoSQL >> MongoDB

Combineer meerdere groepen in een aggregatie in mongodb

U kunt als volgt aggregeren:

  • $group bij de store veld, bereken het subtotal .

  • $project een veld doc om het subtotal te behouden groep in tact, tijdens de volgende groep.

  • $group door null en verzamel het netto totaal.

Code:

db.invoices.aggregate([{
            $group: {
                "_id": "$store",
                "subtotal": {
                    $sum: "$total"
                }
            }
        }, {
            $project: {
                "doc": {
                    "_id": "$_id",
                    "total": "$subtotal"
                }
            }
        }, {
            $group: {
                "_id": null,
                "total": {
                    $sum: "$doc.total"
                },
                "result": {
                    $push: "$doc"
                }
            }
        }, {
            $project: {
                "result": 1,
                "_id": 0,
                "total": 1
            }
        }
    ])

Uitvoer:

{
    "total": 1000,
    "result": [{
            "_id": "ABC",
            "total": 700
        }, {
            "_id": "XYZ",
            "total": 300
        }
    ]
}


  1. Documenten ophalen met geneste objecten die overeenkomen met de tellingsvoorwaarde

  2. MongoDB $pull gebruiken om documenten binnen een array te verwijderen

  3. Compressie in node.js

  4. com.mongodb.MongoException$DuplicateKey verkrijgen in mongodb met java met behulp van upsert