Искам да проектирам ново поле въз основа на условен логически израз, използвайки pymongo.
Стойността трябва да е равна на 1, ако полето 'status' е 'successful_ended' или '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