Anda dapat menggunakan Aggregation Pipeline
untuk menambahkan bidang terhitung ke hasil. Ada beberapa contoh di bawah ini menggunakan mongo
shell, tetapi sintaks dalam Aggregate() helper
Mongoose mirip.
Misalnya, untuk menghitung jumlah (per dokumen pengguna), Anda dapat menggunakan $add
ekspresi
dalam $project
panggung
:
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"] }
}}
)
Untuk menghitung total di beberapa dokumen, Anda perlu menggunakan $group
panggung
dengan $sum
akumulator
, misalnya:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
Anda mungkin hanya menginginkan satu totalthings
bidang; Saya telah menambahkan totaldocs
dan totalthings
sebagai contoh penghitungan beberapa bidang.
Grup _id
dari null
akan menggabungkan nilai dari semua dokumen yang diteruskan ke $group
tahap, tetapi Anda juga dapat menggunakan kriteria lain di sini (seperti pengelompokan berdasarkan user_id
).