Mongo ondersteunt het retourneren van subdocumenten niet. U kunt $elemMatch gebruiken om te filteren, zodat alleen documenten met overeenkomende kenmerken worden geretourneerd, maar u moet zelf de opmerkingen pakken. U kunt enigszins optimaliseren door het opmerkingenveld alleen als volgt terug te sturen:
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
Merk op dat er een bug was tot 0.14.3 (die ik net een paar minuten geleden uitbracht) waardoor results.comments niet zou werken.
Nog een zeer belangrijke opmerking is dat de elem_match die ik daar doe, alleen het eerste overeenkomende element retourneert. Als je alle overeenkomende elementen wilt, moet je ze zelf filteren:
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']