2014-04-10 27 views
5

Więc co mi po tym jest coś takiego jak:Mongoengine: Jak sortować wbudowanego lista dokumentów przez wbudowanego pola dokumentu

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

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

Domyślnie ta sortuje według kolejności chronologicznej składania komentarza, ale chcę, aby sortowanie SortedListField według atrybutu upvotes osadzonych dokumentów komentarzy. Czy to możliwe, a jeśli tak, to jak mam to zrobić?

Odpowiedz

5

To jest rzeczywiście pokryte w unit tests jeśli nie jasny od samego documentation:

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

Więc dodanie słowa kluczowego „zamawiania” pozwala pole do sortowania, gdy elementy są zmieniane zostać określona. Prawdopodobnie chcesz również, aby oświadczenie odwrotne zapewniało również najwyższą wartość "upvotes".

Testy jednostek faktycznie pokazują również inne zastosowania, więc zawsze są dobrym źródłem do znalezienia możliwych niejasnych zastosowań.

Powiązane problemy