Mongo db聚合多个条件

And*_*ghi 12 mongodb mongodb-query aggregation-framework

我想投影一个集合,仅当字段在范围内时才应用导出值.

有点:

db.workouts.aggregate({
 $match: { user_id: ObjectId(".....") }
},
{
 $project: { 
        '20': { $cond: [ {$gt: [ "$avg_intensity", 20]} , '$total_volume', 0] }
    }    
 })
Run Code Online (Sandbox Code Playgroud)

只有当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] }
    }    
 })
Run Code Online (Sandbox Code Playgroud)

我如何应用$ gt和$ lt条件?

Nei*_*unn 20

要在$cond运算符下组合逻辑条件,请使用运算符包装条件$and:

db.workouts.aggregate([
    { "$match": { "user_id": ObjectId("....") }},
    { "$project": { 
       "20": { "$cond": [
           { "$and": [ 
               { "$gt": [ "$avg_intensity", 20 ] },
               { "$lt": [ "$avg_intensity", 25 ] }
           ]},    
           "$total_volume", 
           0
       ]}
   }}
])
Run Code Online (Sandbox Code Playgroud)