Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Mongoengine中动态构建和查询_Python_Mongodb_Mongoengine - Fatal编程技术网

Python 在Mongoengine中动态构建和查询

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

根据问答,我能够理解如何使用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
但是,当我运行相同的代码,但用
\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())
,所以这个查询没有意义

您必须捕获此异常并从筛选器中删除此查询,因为它没有意义。

谢谢--这确实有助于我理解它。我很感激!