Mongo understøtter ikke returnering af underdokumenter. Du kan bruge $elemMatch til at filtrere, så kun dokumenter med matchende attributter returneres, men du skal selv have fat i kommentarerne. Du kan optimere lidt ved kun at returnere kommentarfeltet som følger:
query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
query = query.fields(Book.comments.elem_match({Comment.user_id:'user_c'}))
result = query.limit(1).first()
print 'query result:', result.comments
Bemærk, at der var en fejl med dette indtil 0.14.3 (som jeg netop udgav for et par minutter siden), som ville have forårsaget, at results.comments ikke virkede.
Endnu en meget vigtig bemærkning er, at den elem_match jeg laver der kun returnerer det første matchende element. Hvis du vil have alle matchende elementer, skal du selv filtrere dem:
query = Book.query.filter({Book.comments:{'$elemMatch':{Comment.user_id:'user_c'}}})
result = query.limit(1).first()
print 'query result:', [c for c in result.comments if c.user_id == 'user_c']