Honestly, if you want to use RethinkDB with Java, it may be worthwhile to write a domain centered service with Node or Python and have that as an intermediary for Java. I've actually used Node on several occasions as a translation service for requests to foreign systems as sometimes there's a lot of disconnect in specific implementations of SOAP/WS-* services from Java/PHP/.Net etc. It tends to work very well for this use case.
I've actually been looking at GraphQL with some interest, and thinking this could be a pretty awesome option in front of RethinkDB, which would open up to pretty much any client that supports graph, which is limited right now...
Follow https://github.com/rethinkdb/rethinkdb/issues/3930 for progress updates
https://issues.jboss.org/browse/TEIID-3303 http://teiid.jboss.org/
The normal use case is to use the Teiid JDBC driver (or Postgres ODBC) to connect with the Teiid server and then that handles talking to your datasources via the translators.
I think there was some work done to make a standalone MongoDB JDBC driver using an embedded Teiid server, but I'm not sure how much progress was made there. Mapping document to relational can be tricky.