【发布时间】:2015-05-25 14:20:18
【问题描述】:
我想使用 pymongo 根据条件逻辑语句投影一个新字段。
如果 'status' 字段为 'successful_ended' 或 'successful_ongoing',则该值应等于 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'
我做错了什么?
【问题讨论】:
-
您确定
$eq有效吗?你和'status'比,不应该是'$status'吗? -
是的,我也对此感到惊讶!它适用于
status和$status -
你确定吗?因为,如果您有一个
status字段,但想将其值与'status'字符串进行比较,您会怎么做?