Potrzebuję do zapytania bazy danych Mongo dla elementów, które mają określoną właściwość zaczynającą się od dowolnego prefiksu na liście. Teraz mam kawałek kodu:Lista zapytań MongoEngine dla obiektów mających właściwości zaczynające się od prefiksów określonych na liście
query = mymodel(terms__term__in=query_terms)
i ten pasuje do przedmiotów, które mają pozycję na liście „warunki”, które Stringfield „termin” wyraźnie występujące na liście „QUERY_TERMS”. Co chcę osiągnąć, to posiadanie obiektów, które mają pozycję na liście "warunki", która ma "termin" StringField zaczynający się od dowolnego przedrostka, który występuje na liście "query_terms". Czy można to zrobić w jednym zapytaniu i bez zapisywania każdego możliwego prefiksu "terminu" w bazie danych? EDYTOWANIE: Rozwiązanie poniżej działa świetnie, ale teraz muszę znaleźć obiekty z terminami zaczynającymi się od każdego prefiksu na liście. Zmieniłem
query = reduce(lambda q1, q2: q1.__or__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
do
query = reduce(lambda q1, q2: q1.__and__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
ale to nie działa. W efekcie otrzymuję następujący błąd:
Jakieś pomysły?
Dzięki, jest to łatwiejsze niż myślałem i działa świetnie! –
Dzięki @min Dodałem Twoją edycję. –