2012-03-05 14 views
7

per esempio ..Mongoengine ... query qualcosa non in un ListField?

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

In questo caso, si può scoprire un valore nell'elenco tag come questo.

Page.objects(tags='coding') 

se i tag sono come [ 'codifica', 'x', 'y'], il documento sarà abbinato ...

ma la mia domanda è come posso scoprire il valore non nella lista

mio codice errato sarebbe ..

Page.objects(tags!='coding') 

o

Page.objects(tags__not = 'coding') 

o

Page.objects(tags__not__in = 'coding') 

ma .. loro non semplicemente funzionano ..

come posso interrogare un documento che non ha un determinato valore in un ListField?

risposta

15

Per trovare tutte le pagine che non hanno i tag di codifica utilizzare il $nin dell'operatore:

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

Grazie !!!! Ross !! Grazie!! Un sacco!! Ross, sei un genio !! – Anderson

1

vorrei saltare utilizzando il build-in sintassi Mongo su questo e basta usare una query grezzo:

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

A mano a mano che la query diventa più complicata, ti auguriamo di configurarla in questo modo.

Problemi correlati