Fields with "id" name get special treatment in mapping - see http://docs.spring.io/spring-data/data-mongodb/docs/current/reference/html/#mongo-template.id-handling
What happens is that spring data mapping translates id to "_id" for your query when you do:
Query query = new Query(Criteria.where("travelers.id").is("12345");
so the query going to mongo isn't
{"travelers.id" : "12345"}
but is
{"travelers._id" : "12345"}
The queries logged by spring data mongo are little bit different to what actually goes to mongo.
Strange thing is that spring data doesn't do this mapping when saving the data.
Rename the id field to something like travelerId will solves the issue.