根据这里的问题和答案,我能够弄清楚如何使用 map/reduce 和 lambda 表达式在 mongo 引擎中动态构建复杂的查询。
但是,当我尝试将我的 OR 查询切换为 AND 查询时,我遇到了麻烦(具有讽刺意味的是,在他最初的问题得到回答后,上述问题的发帖人也遇到了麻烦)。
这是我正在运行的代码:
titles = ['topic1', 'topic2', 'topic3']
query = reduce(lambda q1, q2: q1.__and__(q2),
map(lambda the_title: Q(slug__iexact=the_title), titles))
threats = Threat.objects.filter(query)
当我这样做时,我收到以下错误:
InvalidQueryError: Duplicate query conditions: slug__iexact
但是,当我运行相同的代码但替换__and__
为__or__
时,查询可以完美运行。
与往常一样,我不是专家,并且在我去的时候正在弄清楚事情,所以我可能遗漏了一些明显的东西。非常感谢这里的任何想法。