There is a decoder in 2.8.0 of the Java driver called com.mongodb.LazyDBDecoder that just saves the BSON for the document in a byte array wrapped by org.bson.LazyBSONObject, for on demand decoding. You can then iterate through the fields by casting to org.bson.LazyBSONObject and using the method org.bson.LazyBSONObject#entrySet.
There is a decoder in 2.8.0 of the Java driver called com.mongodb.LazyDBDecoder that just saves the BSON for the document in a byte array wrapped by org.bson.LazyBSONObject, for on demand decoding. You can then iterate through the fields by casting to org.bson.LazyBSONObject and using the method org.bson.LazyBSONObject#entrySet.