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
).