Malheureusement, je ne l'ai pas fait fonctionner avec les BasicDBObjects imbriqués.
Enfin, j'utilisais la notation par points qui fonctionne bien :
// This query fetches the files I need
BasicDBObject query = new BasicDBObject("metadata.target_field", "abcdefg"));
List<GridFSDBFile> files = gridFs.find(query);