Python 在Mongoengine中动态构建和查询
根据问答,我能够理解如何使用map/reduce和lambda表达式在mongo引擎中动态构建复杂查询 然而,当我试图将OR查询切换到AND查询时,我遇到了麻烦(具有讽刺意味的是,在他最初的问题得到回答后,上面问题的海报也遇到了麻烦) 以下是我正在运行的代码:Python 在Mongoengine中动态构建和查询,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,根据问答,我能够理解如何使用map/reduce和lambda表达式在mongo引擎中动态构建复杂查询 然而,当我试图将OR查询切换到AND查询时,我遇到了麻烦(具有讽刺意味的是,在他最初的问题得到回答后,上面问题的海报也遇到了麻烦) 以下是我正在运行的代码: titles = ['topic1', 'topic2', 'topic3'] query = reduce(lambda q1, q2: q1.__and__(q2), map(lambda the_ti
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
但是,当我运行相同的代码,但用\uuuu和
替换\uuu或
时,查询工作得非常好
和往常一样,我不是一个专家,我一路摸索,所以我可能错过了一些显而易见的东西。在此,非常感谢您的建议。我认为这是一种特殊的行为: 因为此查询将始终为False或只是重复:
Q(slug__iexact='topic1') and Q(slug__iexact='topic2') <==> False
Q(slug__iexact='topic1') and Q(slug__iexact='topic1') <==> Q(slug__iexact='topic1')
Q(slug\u iexact='topic1')和Q(slug\u iexact='topic2')错误
Q(slug_uiexact='topic1')和Q(slug_uiexact='topic1')Q(slug_uiexact='topic1'))
但是看起来重复被忽略了:ops=set(query.keys())
,所以这个查询没有意义
您必须捕获此异常并从筛选器中删除此查询,因为它没有意义。谢谢--这确实有助于我理解它。我很感激!