10

例如..

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

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

Page.objects(tags='coding')

如果标签类似于 ['coding', 'x', 'y'],那么文档将被匹配...

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

我不正确的代码是..

Page.objects(tags!='coding') 

或者

Page.objects(tags__not = 'coding')

或者

Page.objects(tags__not__in = 'coding')

但是..他们不只是工作..

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

4

2 回答 2

20

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

Page.objects(tags__nin=['coding'])
于 2012-03-05T10:51:31.540 回答
1

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

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

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

于 2012-05-16T04:20:42.117 回答