フィールドが範囲内にある場合にのみ値のエクスポートを適用してコレクションを投影したいと思います。
種類:
db.workouts.aggregate({
$match: { user_id: ObjectId(".....") }
},
{
$project: {
'20': { $cond: [ {$gt: [ "$avg_intensity", 20]} , '$total_volume', 0] }
}
})
Avg_intensityが特定の範囲内にある場合にのみ、値を取得する必要があります。次に、予測結果をグループ化して合計します。
私がやろうとしているのは、$ gtと$ ltのフィルターを適用することですが、あまり成功していません。
db.workouts.aggregate(
{
$match: { user_id: ObjectId("....") }
},
{
$project: {
'20': { $cond: [ [{$gt: [ "$avg_intensity", 20]}, {$lt: [ "$avg_intensity", 25]}] , '$total_volume', 0] }
}
})
$ gtと$ ltの両方の条件を適用するにはどうすればよいですか?
要件が正しければ、パイプラインの一致部分にフィルターを配置する必要があります。
db.workouts.aggregate( [
{ $match: { user_id: ObjectId("...."), "avg_intensity": { $gt: 20, $lte: 25 } } },
{ $group: { _id: ..., count: ... } }
] );