可以使用Aggregation Pipeline來計算字段添加到結果。下面有一些使用mongo
shell的例子,但Mongoose的Aggregate() helper中的語法是相似的。
例如,要計算總和(每用戶文件),你可以在使用$add
expression一個$project
stage:
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"] }
}}
)
要計算整個你需要使用一個$group
stage與$sum
accumulator,例如多個文檔彙總:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
您可能只想要一個total
場;作爲計算多個字段的示例,我已經在totaldocs
和totalthings
中添加。
一組null
_id
將傳遞到$group
階段的所有文檔合併值,但你也可以在這裏(由user_id
如分組)使用其他標準。