sql >> Databáze >  >> NoSQL >> MongoDB

Dotazujte se a shrňte vše pomocí mangusty

Můžete použít Agregační kanál přidat vypočítaná pole k výsledku. Níže jsou uvedeny příklady použití mongo shell, ale syntaxe v pomocník Aggregate() Mongoose je podobný.

Například pro výpočet součtů (na uživatelský dokument) můžete použít $add výraz v $project etapa :

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"] }
    }}
)

Chcete-li vypočítat součty ve více dokumentech, musíte použít $group etapa s $sum akumulátor , například:

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

Můžete chtít pouze jeden total pole; Přidal jsem do totaldocs a totalthings jako příklady výpočtu více polí.

Skupina _id z null sloučí hodnoty ze všech dokumentů předaných do $group fázi, ale můžete zde použít i jiná kritéria (jako je seskupení podle user_id ).



  1. MongoDB získává mLab  –  Jaké jsou různé alternativy MongoDB hostingu?

  2. Práce s vnořenými objekty v Redis?

  3. Jak propojit vzdálený mongodb s pymongo

  4. Mongoose:jak aktualizovat *všechny* osoby splňující podmínku?