Mongo tidak mendukung pengembalian subdokumen. Anda dapat menggunakan $elemMatch untuk memfilter sehingga hanya dokumen dengan atribut yang cocok yang dikembalikan, tetapi Anda harus mengambil sendiri komentarnya. Anda dapat sedikit mengoptimalkan dengan hanya mengembalikan kolom komentar sebagai berikut:
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
Perhatikan bahwa ada bug dengan ini hingga 0.14.3 (yang baru saja saya rilis beberapa menit yang lalu) yang akan menyebabkan results.comments tidak berfungsi.
Catatan lain yang sangat penting adalah bahwa elem_match yang saya lakukan di sana hanya mengembalikan elemen pencocokan pertama. Jika Anda ingin semua elemen yang cocok, Anda harus memfilternya sendiri:
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']