Mongoデータベースに、リスト内の接頭辞で始まる特定のプロパティを持つ要素を照会する必要があります。今、私はこのようなコードの一部がありますリストに指定された接頭辞で始まるプロパティを持つオブジェクトのMongoEngine照会リスト
query = mymodel(terms__term__in=query_terms)
を、これは明示的にリスト「QUERY_TERMS」で発生したStringField「という用語を」持っているリスト「用語」の項目を持つオブジェクトに一致します。私が達成したいのは、リスト "query_terms"に現れる接頭辞で始まるStringField "term"を持つリスト "terms"に項目を持つオブジェクトを持つことです。 1つのクエリで、 "term"のすべての可能な接頭辞をデータベースに格納せずにそれを実行することは可能ですか? EDIT: 下のソリューションはうまくいきましたが、今ではリストのすべての接頭辞で始まる用語でオブジェクトを見つけなければなりません。私は
query = reduce(lambda q1, q2: q1.__and__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
に
query = reduce(lambda q1, q2: q1.__or__(q2),
map(lambda prefix: Q(terms__term__startswith=prefix)))
を変更したが、これは動作しません。私は、次のエラーを取得します。
アイデア?
prefixes = [....]
regex = '^(%s)' % '|'.join(map(re.escape, prefixes))
docs = your_collection.find({'term': {'$regex': regex}})
UPD:
おかげで、それは私が思ったよりも簡単だし、 よく働く! –
ありがとう@分あなたの編集を追加しました。 –