public MorphiaUpdateOperations set(String fieldExpr, Object... values) { E.invalidArgIf(S.empty(fieldExpr) || values.length == 0); if (fieldExpr.startsWith("by")) fieldExpr = fieldExpr.substring(2); String[] keys = fieldExpr.split("(And|[,;\\s]+)"); E.invalidArgIf((values.length != 1) && (keys.length != values.length), "Query key number does not match the params number"); Object oneVal = values.length == 1 ? values[0] : null; for (int i = 0; i < keys.length; ++i) { StringBuilder sb = new StringBuilder(keys[i]); sb.setCharAt(0, Character.toLowerCase(sb.charAt(0))); u_.set(sb.toString(), oneVal == null ? values[i] : oneVal); } return this; }