2012-03-05 59 views
7

例如..Mongoengine ...查詢不在ListField中的東西?

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中沒有給定值的文檔?

回答

15

要找到沒有標籤編碼使用$nin運營商的任何網頁:

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

謝謝!羅斯!謝謝!!很多!! 羅斯你是天才! – Anderson 2012-03-05 11:05:36

1

我將跳過使用內置的蒙戈語法就這一個,只是使用原始查詢:

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

由於查詢變得更加複雜,您希望您像這樣設置它。