Mongoengine ...查询不在ListField中的东西?

时间:2012-03-05 10:37:39

标签: python django mongodb mongoengine

例如..

class Page(Document)
    tags = ListField(StringField())

在这种情况下,我们可以像这样在标签列表中找到一个值。

Page.objects(tags='coding')

如果代码类似于['编码',' x',' y'],则该文档将匹配...

但我的问题是如何找到不在列表字段中的值。

我的错误代码将是......

Page.objects(tags!='coding') 

Page.objects(tags__not = 'coding')

Page.objects(tags__not__in = 'coding')
但是......他们不能简单地工作..

如何查询ListField中没有给定值的文档?

2 个答案:

答案 0 :(得分:15)

要查找没有代码编码的任何网页,请使用$nin运算符:

Page.objects(tags__nin=['coding'])

答案 1 :(得分:1)

我会跳过在这个上使用内置mongo语法,只使用原始查询:

Page.objects(__raw__={"tags" : {"$ne" : ['coding']}})

随着查询变得越来越复杂,你希望你这样设置它。