Мне нужно запросить базу данных Mongo для элементов, которые имеют определенное свойство, начинающееся с любого префикса в списке. Теперь у меня есть такой кусок кода:
query = mymodel(terms__term__in=query_terms)
и это соответствует объектам, у которых есть элемент в списке «terms», у которого StringField «term» явно встречается в списке «query_terms». Чего я хочу добиться, так это наличия объектов, у которых есть элемент в списке «термины», у которого есть «термин» StringField, начинающийся с любого префикса, который встречается в списке «query_terms». Можно ли сделать это в одном запросе и без сохранения всех возможных префиксов «терминов» в базе данных? РЕДАКТИРОВАТЬ: приведенное ниже решение отлично работает, но теперь мне нужно найти объекты с терминами, начинающимися с каждого префикса в списке. я изменил
query = reduce(lambda q1, q2: q1.__or__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
to
query = reduce(lambda q1, q2: q1.__and__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
но это не работает. В итоге я получаю следующую ошибку:
InvalidQueryError: Duplicate query conditions: terms__term__startswith
Любые идеи?