aspen和python一起使用_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

]

}

标签:mongodb,pymongo,python

来源: https://codeday.me/bug/20191028/1951312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值