2014-04-10 1 views
5

Quindi quello che sto cercando è qualcosa di simile:Mongoengine: come ordinare la lista documento incorporato dal campo documento incorporato

class Comment(EmbeddedDocument): 
    content = StringField() 
    upvotes = IntField() 
    pub_date = DateTimeField() 

class Post(Document): 
    title = StringField() 
    comments = SortedListField(EmbeddedDocumentField(Comment)) 
    post_date = DateTimeField() 

Per impostazione predefinita, questa sorta di l'ordine cronologico di presentazione commento, ma voglio fare l'ordinamento SortedListField tramite l'attributo upvotes dei documenti di commento incorporato. È possibile, e se sì, come faccio a farlo?

risposta

5

questo è in realtà coperto nel unit tests se non è chiaro dal documentation stesso:

class Post(Document): 
    title = StringField() 
    comments = SortedListField(EmbeddedDocumentField(Comment) 
           ordering="upvotes", reverse=True) 
    post_date = DateTimeField() 

Quindi aggiungendo la parola chiave "ordinamento" consente il campo per ordinare quando gli elementi sono cambiati da specificare. Probabilmente vuoi anche l'istruzione inversa per assicurarti che il valore più alto "upvotes" sia il primo.

I test di unità mostrano anche alcuni altri utilizzi quindi sono sempre una buona fonte per scoprire usi oscuri.