/** * Equivalent of the $ne operand * * @param object Value to query * @return {@code this} */ public QueryBuilder notEquals(final Object object) { addOperand(QueryOperators.NE, object); return this; }
/** * Equivalent to the $gte operator * * @param object Value to query * @return {@code this} */ public QueryBuilder greaterThanEquals(final Object object) { addOperand(QueryOperators.GTE, object); return this; }
/** * Passes a regular expression for a query * * @param regex Regex pattern object * @return {@code this} */ public QueryBuilder regex(final Pattern regex) { addOperand(null, regex); return this; }
/** * Equivalent to the $gt operator * * @param object Value to query * @return {@code this} */ public QueryBuilder greaterThan(final Object object) { addOperand(QueryOperators.GT, object); return this; }
/** * Equivalent to the $lte operand * * @param object Value to query * @return {@code this} */ public QueryBuilder lessThanEquals(final Object object) { addOperand(QueryOperators.LTE, object); return this; }
/** * Equivalent of the find({key:value}) * * @param object Value to query * @return {@code this} */ public QueryBuilder is(final Object object) { addOperand(null, object); return this; }
/** * Equivalent of the $all operand * * @param object Value to query * @return {@code this} */ public QueryBuilder all(final Object object) { addOperand(QueryOperators.ALL, object); return this; }
/** * Equivalent of the $mod operand * * @param object Value to query * @return {@code this} */ public QueryBuilder mod(final Object object) { addOperand(QueryOperators.MOD, object); return this; }
/** * Equivalent of the $size operand * * @param object Value to query * @return {@code this} */ public QueryBuilder size(final Object object) { addOperand(QueryOperators.SIZE, object); return this; }
/** * Equivalent of the $exists operand * * @param object Value to query * @return {@code this} */ public QueryBuilder exists(final Object object) { addOperand(QueryOperators.EXISTS, object); return this; }
/** * Equivalent to the $elemMatch operand * * @param match the object to match * @return {@code this} */ public QueryBuilder elemMatch(final DBObject match) { addOperand(QueryOperators.ELEM_MATCH, match); return this; }
/** * Equivalent to the $lt operand * * @param object Value to query * @return {@code this} */ public QueryBuilder lessThan(final Object object) { addOperand(QueryOperators.LT, object); return this; }
/** * Equivalent of the $in operand * * @param object Value to query * @return {@code this} */ public QueryBuilder in(final Object object) { addOperand(QueryOperators.IN, object); return this; }
/** * Equivalent of the $nin operand * * @param object Value to query * @return {@code this} */ public QueryBuilder notIn(final Object object) { addOperand(QueryOperators.NIN, object); return this; }
/** * Equivalent of the $near operand * * @param x x coordinate * @param y y coordinate * @return {@code this} */ public QueryBuilder near(final double x, final double y) { addOperand(QueryOperators.NEAR, asList(x, y)); return this; }
/** * Equivalent of the $nearSphere operand * * @param longitude coordinate in decimal degrees * @param latitude coordinate in decimal degrees * @return {@code this} */ public QueryBuilder nearSphere(final double longitude, final double latitude) { addOperand(QueryOperators.NEAR_SPHERE, asList(longitude, latitude)); return this; }
/** * Equivalent to a $within operand, based on a bounding box using represented by two corners * * @param x the x coordinate of the first box corner. * @param y the y coordinate of the first box corner. * @param x2 the x coordinate of the second box corner. * @param y2 the y coordinate of the second box corner. * @return {@code this} */ @SuppressWarnings("unchecked") public QueryBuilder withinBox(final double x, final double y, final double x2, final double y2) { addOperand(QueryOperators.WITHIN, new BasicDBObject(QueryOperators.BOX, new Object[]{new Double[]{x, y}, new Double[]{x2, y2}})); return this; }
/** * Equivalent of the $centerSphere operand mostly intended for queries up to a few hundred miles or km. * * @param longitude coordinate in decimal degrees * @param latitude coordinate in decimal degrees * @param maxDistance max spherical distance * @return {@code this} */ public QueryBuilder withinCenterSphere(final double longitude, final double latitude, final double maxDistance) { addOperand(QueryOperators.WITHIN, new BasicDBObject(QueryOperators.CENTER_SPHERE, asList(asList(longitude, latitude), maxDistance))); return this; }
/** * Equivalent of the $within operand, used for geospatial operation * * @param x x coordinate * @param y y coordinate * @param radius radius * @return {@code this} */ public QueryBuilder withinCenter(final double x, final double y, final double radius) { addOperand(QueryOperators.WITHIN, new BasicDBObject(QueryOperators.CENTER, asList(asList(x, y), radius))); return this; }
/** * Equivalent to a $within operand, based on a bounding polygon represented by an array of points * * @param points an array of Double[] defining the vertices of the search area * @return {@code this} */ public QueryBuilder withinPolygon(final List<Double[]> points) { notNull("points", points); if (points.isEmpty() || points.size() < 3) { throw new IllegalArgumentException("Polygon insufficient number of vertices defined"); } addOperand(QueryOperators.WITHIN, new BasicDBObject(QueryOperators.POLYGON, convertToListOfLists(points))); return this; }