This query is causing problems, because it is probably fetching the whole doc: projections.add( Projection.project( Projection.includeField("repositories.*.images.*.repositories.*.published"), Projection.array("repositories", and( withValue("published", eq, true), withValue("images.*.repositories.*.published", eq, true) ), It is only pulling published=true, but to compute that, we pull everything. Is there a way around it?