Skip to content
广告❤️成为赞助商

Condition Builder

Quickly build conditions using MongoPlus

Note:

  • The first parameter boolean condition indicates whether this condition will be included in the final SQL.
    For example:
    java
    query.like(StringUtils.isNotBlank(name), Entity::getName, name)
         .eq(age != null && age >= 0, Entity::getAge, age)
  • Multiple methods in the code block below will automatically add a boolean parameter from top to bottom, defaulting to true.

Warning:

Do not transmit QueryChainWrapper in RPC calls

  1. QueryChainWrapper is heavy.
  2. Transmitting QueryChainWrapper is like using a map in a controller—it’s convenient initially, but painful to maintain.
  3. Correct RPC approach: Use a DTO, then the receiver executes queries based on the DTO.

custom

java
custom(BasicDBObject basicDBObject);
custom(BSON bson);
  • Custom condition
  • Example: new BasicDBObject("$eq", new BasicDBObject("_id","1"))

combine

java
combine(boolean condition, SFunction<QueryChainWrapper<T,?>, QueryChainWrapper<T,?>> function)
combine(SFunction<QueryChainWrapper<T,?>, QueryChainWrapper<T,?>> function)
combine(QueryChainWrapper<?,?> queryChainWrapper)
combine(boolean condition, QueryChainWrapper<?,?> queryChainWrapper)
  • Conditions in combine are grouped together, often used for or/and.

Example (constructing OR condition):

java
or(wrapper -> wrapper.eq(User::getUserName, "John").like(User::getUserName, "1"))

Resulting query:

json
{ "or": [{ "userName": { "eq": "John" } }, { "userName": { "like": "1" } }] }

Using combine:

java
or(wrapper ->
    wrapper.combine(combineWrapper ->
        combineWrapper.eq(User::getUserName, "John").like(User::getUserName, "1")
    )
)

Resulting query:

json
{ "or": [{ "userName": { "eq": "John", "like": "1" } }] }

Note:

  • When using combine, make sure all field names inside are the same.

eq

java
eq(SFunction<T,Object> column, Object val)
eq(boolean condition, SFunction<T,Object> column, Object val)
  • Equal =
  • Example: eq("name", "John")name = 'John'

ne

java
ne(SFunction<T,Object> column, Object val)
ne(boolean condition, SFunction<T,Object> column, Object val)
  • Not equal <>
  • Example: ne("name", "John")name <> 'John'

gt

java
gt(SFunction<T,Object> column, Object val)
gt(boolean condition, SFunction<T,Object> column, Object val)
  • Greater than >
  • Example: gt("age", 18)age > 18

gte

java
gte(SFunction<T,Object> column, Object val)
gte(boolean condition, SFunction<T,Object> column, Object val)
  • Greater than or equal >=
  • Example: gte("age", 18)age >= 18

lt

java
lt(SFunction<T,Object> column, Object val)
lt(boolean condition, SFunction<T,Object> column, Object val)
  • Less than <
  • Example: lt("age", 18)age < 18

lte

java
lte(SFunction<T,Object> column, Object val)
lte(boolean condition, SFunction<T,Object> column, Object val)
  • Less than or equal <=
  • Example: lte("age", 18)age <= 18

like

java
like(SFunction<T,Object> column, Object val)
like(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE '%value%'
  • Example: like("name", "John")

likeLeft

java
likeLeft(SFunction<T,Object> column, Object val)
likeLeft(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE '%value'
  • Example: likeLeft("name", "^John")

likeRight

java
likeRight(SFunction<T,Object> column, Object val)
likeRight(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE 'value%'
  • Example: likeRight("name", "John$")

in

java
in(SFunction<T,Object> column, Collection<?> value)
in(boolean condition, SFunction<T,Object> column, Collection<?> value)
  • Field IN (value.get(0), value.get(1), ...)
  • Example: in("age", Arrays.asList(1,2,3))age IN (1,2,3)
java
in(SFunction<T,Object> column, Object... values)
in(boolean condition, SFunction<T,Object> column, Object... values)
  • Field IN (v0, v1, ...)
  • Example: in("age", 1, 2, 3)age IN (1,2,3)

nin

java
nin(SFunction<T,Object> column, Collection<Object> valueList)
nin(boolean condition, String column, Collection<Object> valueList)
  • Field NOT IN (...)
  • Example: nin("age", Arrays.asList(1,2,3))age NOT IN (1,2,3)

and

java
and(LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
and(boolean condition, LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
  • AND (used inside OR)

orderByAsc

java
orderByAsc(SFunction<T,Object> columns)
orderByAsc(boolean condition, SFunction<T,Object> columns)
  • ORDER BY ... ASC
  • Example: orderByAsc("id", "name")

orderByDesc

java
orderByDesc(SFunction<T,Object> columns)
orderByDesc(boolean condition, SFunction<T,Object>... columns)
  • ORDER BY ... DESC
  • Example: orderByDesc("id", "name")

or

java
or(SFunction<T,Object> column, Object value)
or(boolean condition, String column, Object value)
or(QueryChainWrapper<?,?> queryChainWrapper)
or(boolean condition, QueryChainWrapper<?,?> queryChainWrapper)
  • OR

nor

java
nor(boolean condition, QueryChainWrapper<?,?> queryChainWrapper)
nor(QueryChainWrapper<?,?> queryChainWrapper)
nor(boolean condition, SFunction<T,Object> column, Object value)
nor(SFunction<T,Object> column, Object value)
nor(boolean condition, String column, Object value)
nor(String column, Object value)
  • Documents must not match any of the conditions

type

java
type(SFunction<T,Object> column, TypeEnum value)
type(String column, TypeEnum value)
type(SFunction<T,Object> column, String value)
type(String column, String value)
type(SFunction<T,Object> column, Integer value)
type(String column, Integer value)
  • Specify field type for query

exists

java
exists(SFunction<T,Object> column, Boolean value)
exists(boolean condition, SFunction<T,Object> column, Boolean value)
  • Field exists or not

not

java
not(CompareCondition compareCondition)
not(boolean condition, CompareCondition compareCondition)
  • Negation

expr

java
expr(CompareCondition compareCondition)
expr(boolean condition, CompareCondition compareCondition)
  • Compute expression

mod

java
mod(boolean condition, SFunction<T,Object> column, long divide, long remain)
mod(SFunction<T,Object> column, long divide, long remain)
mod(boolean condition, SFunction<T,Object> column, Collection<Long> value)
mod(SFunction<T,Object> column, Collection<Long> value)
mod(boolean condition, String column, long divide, long remain)
mod(String column, long divide, long remain)
mod(boolean condition, String column, Collection<Long> value)
mod(String column, Collection<Long> value)
  • Field modulo condition

elemMatch

java
elemMatch(boolean condition, SFunction<T,Object> column, QueryChainWrapper<?,?> queryChainWrapper)
elemMatch(SFunction<T,Object> column, QueryChainWrapper<?,?> queryChainWrapper)
elemMatch(boolean condition, String column, QueryChainWrapper<?,?> queryChainWrapper)
elemMatch(String column, QueryChainWrapper<?,?> queryChainWrapper)
  • Match values in an array

between

java
Children between(boolean condition, SFunction<T,Object> column, Object gte, Object lte, boolean convertGtOrLt)
Children between(SFunction<T,Object> column, Object gte, Object lte, boolean convertGtOrLt)
Children between(boolean condition, String column, Object gte, Object lte, boolean convertGtOrLt)
Children between(String column, Object gte, Object lte, boolean convertGtOrLt)
  • Between ... and ...
  • convertGtOrLt: whether to convert to >= / <=

all

java
all(boolean condition, SFunction<T,Object> column, Collection<Object> value)
all(SFunction<T,Object> column, Collection<Object> value)
all(boolean condition, String column, Collection<Object> value)
all(String column, Collection<Object> value)
  • Array contains all specified elements

regex

java
regex(boolean condition, SFunction<T,Object> column, Object value)
regex(SFunction<T,Object> column, Object value)
regex(boolean condition, String column, Object value)
regex(String column, Object value)
  • Regex query

text

java
text(boolean condition, Object value)
text(Object value)
text(boolean condition, Object value, TextSearchOptions textSearchOptions)
text(Object value,TextSearchOptions textSearchOptions)
  • 文本查询

size

java
size(String fieldName, int size);
  • Matches all documents where the field value is an array of the specified size.

bitsAllClear

java
bitsAllClear(SFunction<T,?> fieldName, long bitmask);
  • Matches all documents where all bit positions in the field are clear.

bitsAllSet

java
bitsAllSet(SFunction<T,?> fieldName, long bitmask);
  • Matches all documents where all bit positions in the field are set.

bitsAnyClear

java
bitsAnyClear(SFunction<T,?> fieldName, long bitmask);
  • Matches all documents where any bit position in the field is clear.

bitsAnySet

java
bitsAnySet(SFunction<T,?> fieldName, long bitmask);
  • Matches all documents where any bit position in a field is set

QueryWrapper

::: Tip Note: Inherited from AbstractWrapper, its internal property entity is also used to generate where conditions

And LambdaQueryWrapper, which can be obtained through the new QueryWrapper().lambda() method :::

project

java
project(Projection... projection)
project(List<Projection> projectionList)
select(boolean displayId, Projection... projection)
  • Set query fields ::: Tip Note: The above methods are divided into two categories.

The second category is for filtering query fields (excluding primary keys). If the input parameter does not contain class, the entity property in the wrapper must have a value before calling it!

For repeated calls of these two types of methods, the last call will prevail.

:::

  • Example: select("id", "name", "age")
  • Example: select(i -> i.getProperty().startsWith("test"))

UpdateWrapper

::: Tip Note: Inherited from AbstractWrapper, its internal property entity is also used to generate where conditions and LambdaUpdateWrapper, and can be obtained via the new UpdateWrapper().lambda() method! :::

set

java
set(String column, Object val)
set(boolean condition, String column, Object val)
  • SQL SET Field
  • Example: set("name", "老李头")
  • Example: set("name", "")---> The database field value becomes empty string
  • Example: set("name", null)---> The database field value becomes null

setOnInsert

java
setOnInsert(boolean condition, SFunction<T,Object> column, Object value);
setOnInsert(SFunction<T,Object> column, Object value);
setOnInsert(boolean condition, String column, Object value);
setOnInsert(String column, Object value);
  • Assigns a specified value to a field in a document.
  • Example: setOnInsert(User::getUserName,"张三")

push

java
push(boolean condition,SFunction<T,Object> column,Object value);
push(SFunction<T,Object> column,Object value);
push(boolean condition,String column,Object value);
push(String column,Object value);
push(boolean condition,SFunction<T,Object> column,Object ... value);
push(SFunction<T,Object> column,Object ... value);
push(boolean condition,String column,Object ... value);
push(String column,Object ... value);
push(boolean condition, SFunction<T,Object> column, List<?> value);
push(SFunction<T,Object> column, List<?> value);
push(boolean condition, String column, List<?> value);
push(String column, List<?> value);
  • Push the specified value into the array
  • Example: push(User::getRoleList,new ArrayList<>())

inc

java
inc(boolean condition,SFunction<T,Object> column,Number value);
inc(SFunction<T,Object> column,Number value);
inc(boolean condition,String column,Number value);
inc(String column,Number value);
  • Atomic increment of the specified value
  • Example: inc(User::getAge,1)

currentDate

java
currentDate(boolean condition,SFunction<T,Object> column);
currentDate(SFunction<T,Object> column);
currentDate(boolean condition,String column);
currentDate(String column);
currentDate(boolean condition,SFunction<T,Object> column, CurrentDateType currentDateType);
currentDate(SFunction<T,Object> column, CurrentDateType currentDateType);
currentDate(boolean condition,String column, CurrentDateType currentDateType);
currentDate(String column, CurrentDateType currentDateType);
  • Sets the value of a field to the current date or timestamp.
  • Example: currentDate(User::getCreateTime,CurrentDateType.DATE)

min

java
min(boolean condition,SFunction<T,Object> column, Object value);
min(SFunction<T,Object> column, Object value);
min(boolean condition,String column, Object value);
min(String column, Object value);
  • Updates a specified field if its value is less than the input value.
  • Example: min(User::getSalt,100)
  • Example: min(User::getCreateTime,LocalDateTime.now())

max

java
max(boolean condition,SFunction<T,Object> column, Object value);
max(SFunction<T,Object> column, Object value);
max(boolean condition,String column, Object value);
min(String column, Object value);
  • Update if the specified field value is greater than the input value
  • Example: max(User::getSalt,100)
  • Example: max(User::getCreateTime,LocalDateTime.now())

mul

java
mul(boolean condition,SFunction<T,Object> column,Number value);
mul(SFunction<T,Object> column,Number value);
mul(boolean condition,String column,Number value);
mul(String column,Number value);
  • Multiplies the value of the specified field by value.
  • Example: mul(User::getAge,21)

rename

java
rename(boolean condition, String oldFieldName,String newFieldName);
rename(String oldFieldName,String newFieldName);
rename(boolean condition, SFunction<O,Object> oldFieldName,String newFieldName);
rename(SFunction<O,Object> oldFieldName,String newFieldName);
rename(boolean condition, SFunction<O,Object> oldFieldName,SFunction<N,Object> newFieldName);
rename(SFunction<O,Object> oldFieldName,SFunction<N,Object> newFieldName);
  • Update field names
  • Example: rename(User::getUserName,"user_name")
  • Example: rename(User::getUserName,User::getUserName)

unset

java
unset(SFunction<T,Object>... columns);
unset(boolean condition,SFunction<T,Object>... columns);
unset(String... columns);
unset(boolean condition,String... columns);
unset(List<String> columns);
unset(boolean condition,List<String> columns);
  • Delete specific fields
  • Example: unset(User::getUserName,User::getAge)

addToSet

java
addToSet(boolean condition,SFunction<T,Object> column,Object value,boolean each);
addToSet(SFunction<T,Object> column,Object value,boolean each);
addToSet(boolean condition,String column,Object value,boolean each);
addToSet(String column,Object value,boolean each);
  • Add values ​​to array
  • Example: addToSet(User::getRoleList,new ArrayList<>(),true)

pop

java
pop(boolean condition,SFunction<T,Object> column, PopType popType);
pop(SFunction<T,Object> column, PopType popType);
pop(boolean condition,String column, PopType popType);
pop(String column, PopType popType);
  • Delete the first or last element in the array
  • Example: pop(User::getRoleList,PopType.FIRST)

pull

java
pull(boolean condition,SFunction<T,Object> column,Object value);
pull(SFunction<T,Object> column,Object value);
pull(boolean condition,QueryChainWrapper<?,?> wrapper);
pull(boolean condition,SFunction<QueryChainWrapper<?,?>,QueryChainWrapper<?,?>> function);
pull(QueryChainWrapper<?,?> wrapper);
pull(SFunction<QueryChainWrapper<?,?>,QueryChainWrapper<?,?>> function);
pull(boolean condition,String column,Object value);
pull(String column,Object value);
  • Delete instances in the array that meet the condition or match the specified value
  • Example: pull(new QueryWrapper<User>().eq(User::getUserName,"Zhang San"))

pullAll

java
pullAll(boolean condition,SFunction<T,Object> column, Collection<?> values);
pullAll(SFunction<T,Object> column, Collection<?> values);
pullAll(boolean condition,SFunction<T,Object> column, Object... values);
pullAll(SFunction<T,Object> column, Object... values);
pullAll(boolean condition,String column, Collection<?> values);
pullAll(String column, Collection<?> values);
pullAll(boolean condition,String column, Object... values);
pullAll(String column, Object... values);
pullAll(boolean condition,MutablePair<String, Collection<?>>... pullAllPair);
pullAll(MutablePair<String, Collection<?>>... pullAllPair);
  • Delete instances from an array that meet a condition or a specified value.
  • Example: pullAll(User::getId, Arrays.asList(1,2,3))
  • Example: pullAll(MutablePair.of(User::getId, Arrays.asList(1,2,3)))

lambda

  • Get LambdaWrapper

In QueryWrapper, get LambdaQueryWrapper. In UpdateWrapper , you obtain LambdaUpdateWrapper .

Chaining Lambda Calls

Java
// Differentiation:
// Chaining Normal Calls
UpdateChainWrapper<T> update();
// Chaining Lambda Calls. Note: Kotlin is not supported.
LambdaUpdateChainWrapper<T> lambdaUpdate();

// Equivalent Example:
query().eq("id", value).one();
lambdaQuery().eq(Entity::getId, value).one();

// Equivalent Example:
update().eq("id", value).remove();
lambdaUpdate().eq(Entity::getId, value).remove();