mongodb - MongoDB聚合多条件

标签 mongodb mongodb-query aggregation-framework

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

种类:

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 条件?

最佳答案

$cond 下组合逻辑条件运算符然后用 $and 包装条件运营商:

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

关于mongodb - MongoDB聚合多条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250849/

相关文章:

mongodb - 如何使用group by进行聚合并正确排序

java - 如何使用 Java 驱动程序连接到 EC2 上的 MongoDB

node.js - 如何使用app.method()进行授权

c# - 使用 C# 驱动程序从 MongoDB 集合上的文本查询中检索相关性有序结果

node.js - 查询 MongoDb 以从引用 id 数组的集合中获取计数

mongodb - Mongo聚合查询-字符串包含值的过滤条件

Mongodb 按复杂的计算值对文档进行排序

c# - 连接到 mongodb 唱 C# 快速浏览而不创建数据库或集合

mongodb - 如何获得 MongoDB 集合中的最低值?

Mongoose:根据另一个集合中的值过滤集合