Mongo non supporta la restituzione di documenti secondari. Puoi usare $elemMatch per filtrare in modo che vengano restituiti solo i documenti con attributi corrispondenti, ma dovrai prendere tu stesso i commenti. Potresti ottimizzare leggermente restituendo solo il campo dei commenti come segue:
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
Nota che c'era un bug con questo fino alla 0.14.3 (che ho appena rilasciato pochi minuti fa) che avrebbe causato il mancato funzionamento di results.comments.
Un'altra nota molto importante è che elem_match che sto facendo lì restituisce solo il primo elemento corrispondente. Se vuoi tutti gli elementi corrispondenti devi filtrarli tu stesso:
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']