/** * Return a query from a json node */ public static Query query(ContainerNode query) { return new Query(query); }
/** * <pre> * { $not : { query } } * </pre> */ public static Query not(Query query) { Query q = new Query(false); q.add("$not", query.toJson()); return q; }
/** * <pre> * { $and : [ expressions ] } * { $or : [ expressions ] } * </pre> */ public static Query logical(LogOp op, Collection<Query> expressions) { Query q = new Query(true); for (Query x : expressions) { ((ArrayNode) q.node).add(x.toJson()); } Query a = new Query(false); a.add(op.toString(), q.toJson()); return a; }
/** * <pre> * { array: <array>, elemMatch:<x> } * </pre> */ public static Query arrayMatch(String array, Query x) { Query q = new Query(false); q.add("array", array).add("elemMatch", x.toJson()); return q; }
/** * <pre> * { field: <field>, op: <in/nin>, rfield: <rfield> } * </pre> */ public static Query withFieldValues(String field, NaryOp op, String rfield) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("rfield", rfield); return q; }
/** * <pre> * { field: <field>, op: <op>, rfield: <rfield> } * </pre> */ public static Query withField(String field, BinOp op, String rfield) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("rfield", rfield); return q; }
/** * <pre> * { field: <field>, op: <in/nin>, values: [ values ] } * </pre> */ public static Query withValues(String field, NaryOp op, Literal... values) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("values", Literal.toJson(values)); return q; }
/** * <pre> * { field: <field>, op: <op>, rvalue: <value> } * </pre> */ public static Query withValue(String field, BinOp op, Literal value) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("rvalue", value.toJson()); return q; }
/** * <pre> * { array: <array>, contains: <op>, values: [values] } * </pre> */ public static Query arrayContains(String array, ArrOp op, Literal... values) { Query q = new Query(false); q.add("array", array).add("contains", op.toString()).add("values", Literal.toJson(values)); return q; }
/** * <pre> * { field: <field>, regex: <pattern>, ... } * </pre> */ public static Query regex(String field, String pattern, boolean caseInsensitive, boolean extended, boolean multiline, boolean dotall) { Query q = new Query(false); q.add("field", field).add("regex", pattern). add("caseInsensitive", caseInsensitive). add("extended", extended). add("multiline", multiline). add("dotall", dotall); return q; }