Mongo stöder inte returnering av underdokument. Du kan använda $elemMatch för att filtrera så att endast dokument med matchande attribut returneras, men du måste ta tag i kommentarerna själv. Du kan optimera något genom att bara returnera kommentarsfältet enligt följande:
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
Observera att det fanns en bugg med detta fram till 0.14.3 (som jag släppte för några minuter sedan) som skulle ha gjort att results.comments inte fungerade.
Ännu en mycket viktig anmärkning är att elem_match jag gör där endast returnerar det första matchande elementet. Om du vill ha alla matchande element måste du filtrera dem själv:
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']