Aby to zrobić za pomocą sterownika Java, możesz wykonać następujące czynności:
DBObject queryForElem = new BasicDBObject("array", new BasicDBObject("$elemMatch", new BasicDBObject("id", "3456")));
DBObject updateMatchingElem = new BasicDBObject("$set", new BasicDBObject("array.$.Y", "1"));
coll.update(queryForElem, updateMatchingElem);
Biorąc pod uwagę, że jest to trochę nieporęczne, możesz zamiast tego użyć QueryBuildera, który zapewnia trochę większą czytelność:
DBObject queryForElem = QueryBuilder.start("array").elemMatch(new BasicDBObject("id", "3456")).get();
DBObject updateMatchingElem = new BasicDBObject("$set", new BasicDBObject("array.$.Y", "1"));
coll.update(queryForElem, updateMatchingElem);