AggregationPipeline
を使用できます 計算フィールドを結果に追加します。 mongo
を使用したいくつかの例を以下に示します。 シェルですが、Mongooseの Aggregate()ヘルパー
の構文 似ています。
たとえば、(ユーザードキュメントごとの)合計を計算するには、<を使用できます。 code> $ add 式
$ project
ステージ
:
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を使用する必要があります。
ステージ
$ sum
アキュムレータ
、例:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
total
を1つだけにしたい場合があります 分野; totaldocs
に追加しました およびtotalthings
複数のフィールドを計算する例として。
グループ_id
null
の $ group
に渡されたすべてのドキュメントの値を結合します ステージですが、ここで他の基準を使用することもできます( user_id
によるグループ化など) 。