Я хочу создать новое поле на основе оператора условной логики, используя pymongo.
Значение должно быть равно 1, если в поле 'status' указано значение 'successful_Завершено' или 'successful_ongoing'. Я пытался реализовать это, используя $in
в операторе $cond
. Упрощенная версия моего сводного оператора выглядит так:
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'
? - person bagrat   schedule 25.05.2015status
, так и с$status
- person ninjaPixel   schedule 25.05.2015status
, но вы хотели бы сравнить его значение со строкой'status'
? - person bagrat   schedule 25.05.2015