sql >> Database teknologi >  >> NoSQL >> MongoDB

Spørg og sum alt sammen med mongoose

Du kan bruge Aggregation Pipeline at tilføje beregnede felter til et resultat. Der er nogle eksempler nedenfor, der bruger mongo shell, men syntaksen i Mongooses Aggregate()-hjælper ligner.

For eksempel, til at beregne summer (pr. brugerdokument) kan du bruge kode>$add udtryk i et $projekt scene :

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

For at beregne totaler på tværs af flere dokumenter skal du bruge en $group scene med en $sum akkumulator , for eksempel:

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

Du vil måske kun have den ene total Mark; Jeg har tilføjet i totaldocs og totalthings som eksempler på beregning af flere felter.

En gruppe _id af null kombinerer værdier fra alle dokumenter, der er sendt til $group fase, men du kan også bruge andre kriterier her (såsom gruppering efter bruger_id ).



  1. Brug redis til at bygge en realtidschat med socket.io og NodeJs

  2. Hvordan gemmer man forskellige sprog (ikke-engelsk) data i MongoDB Field og henter de samme data?

  3. MongoDB Update Deep Array

  4. MongoDB - Sådan vælger du kun numeriske strenge / Tjek om strengen er numerisk i mongo-shell