Bir sonuca hesaplanan alanları eklemek için Aggregation Pipeline kullanabilirsiniz: Burada kullanıcı şema olduğunu. Aşağıda mongo
kabuğunu kullanan bazı örnekler vardır, ancak Mongoose'un Aggregate() helper'daki sözdizimi benzerdir.
Örneğin, içinde $add
expression kullanabilirsiniz (kullanıcı doküman başına) toplamları hesaplamak için $project
stage a:
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"] }
}}
)
örneğin, bir $sum
accumulator ile $group
stage kullanmaya gerek birden çok belgede toplamları hesaplamak için:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
yalnızca bir total
alanı isteyebilirsiniz; Birden çok alanı hesaplama örnekleri olarak totaldocs
ve totalthings
ekledim.
bir grup null
arasında _id
$group
aşamasına geçirilir tüm belgeler değerleri birleştirir, ama aynı zamanda (user_id
ile gruplama gibi) burada, diğer kriterler kullanılabilir.