python-将$cond语句与$project一起使用并在PyMongo中聚合

我想使用pymongo基于条件逻辑语句来投影一个新字段.

如果“状态”字段为“成功结束”或“成功进行中”,则该值应等于1.我尝试通过在$cond语句中使用$in来实现这一点.我的汇总语句的简化版本如下:

pipeline = [
    {'$project': {'platform':1, 'platform_id':1, 'funding_type':1, 'raised_usd':1, 'status':1, 
                  'successful_1': # an equals statement works
                     {
                        '$cond':[{'$eq':['status', 'successful_ended']}, 1, 0]
                     },
                  'successful_2': # but this fails 
                     {
                        '$cond':[{'status': {'$in': ['successful_ended', 'successful_ongoing']}}, 1, 0]
                     }
                  }
    }
]

result = db.projects.aggregate(pipeline)

它失败并显示以下消息:

invalid operator '$in'

我做错了什么?

解决方法:

请改用$or运算符,该运算符将计算一个或多个表达式,如果任何一个表达式为true,则返回true.否则,$or返回false.因此,成功_2字段可以投影为:

'successful_2': {
    '$cond': [ 
        { 
            '$or': [ 
                { '$eq': [ '$status', 'successful_ended' ] }, 
                { '$eq': [ '$status', 'successful_ongoing' ] } 
            ]
        }     
        , 1, 0 
    ]
}
上一篇:如何使用pymongo将日期时间字符串作为ISODate插入Mongodb


下一篇:python – 如何在Pymongo的每个插入中自动增加id?