Как сделать запрос на записи, где значения двух полей совпадают в монгоалхимии?
У меня есть модель для монгоалхимии:
class ImportProductReport(mongo.Document):
target = mongo.IntField(default=0)
processed = mongo.IntField(default=0)
is_in_process_remove_offers = mongo.BoolField(default=False)
is_old_offers_removed = mongo.BoolField(default=False)
...
Мне нужно получить записи, где
ImportProductReport.is_in_process_remove_offers == False,
ImportProductReport.is_old_offers_removed == False,
ImportProductReport.target == ImportProductReport.processed.
Без последнего равного все хорошо работает
res = ImportProductReport.query\
.filter(
ImportProductReport.is_old_offers_removed == False,
ImportProductReport.is_in_process_remove_offers == False
)\
.all()
Но если я попытаюсь написать что-то вроде этого:
res = ImportProductReport.query\
.filter(
ImportProductReport.is_old_offers_removed == False,
ImportProductReport.is_in_process_remove_offers == False,
ImportProductReport.target == ImportProductReport.processed
)\
.all()
У меня ошибка:
AttributeError: 'bool' object has no attribute 'obj'
Подскажите, пожалуйста, как добавить это последнее условие в мой запрос?:)
1 ответ
Если это кому-то поможет, я нашел ответ на свой вопрос. Mongoalchemy допускает запросы с синтаксисом, аналогичным синтаксису оригинальной MongoDB. Поэтому запрос, который мне нужен, можно записать так:
res = ImportProductReport.query\
.filter({
'is_old_offers_removed': False,
'is_in_process_remove_offers': False,
'$where': 'this.target == this.processed'
})\
.all()