嵌套文档字段
在获取嵌套文档字段时,是不可以通过lambda的形式获取的,所以MongoPlus提供了其他的方式去构建嵌套文档字段,从而避免了直接写为字符串。嵌套文档字段,也就是所谓的内部文档,比如User类中的role属性是Role类,想要的值为“role.roleName”,即可通过此方式实现。
FunctionUtil
- 通过该类,即可构建嵌套文档字段
- 此类不止可以构建嵌套文档字段,普通一级字段也可获取
- 可获取为字段名前带$
示例
普通一级字段获取
java
public class User {
private String userName;
}
public static void main(String[] args) {
// 调用获取字段名方法,如@CollectionField注解指定了字段名,则返回注解值
String fieldName = FunctionUtil.getFieldName(User::getUserName)
// 打印为:userName
System.out.println(fieldName);
// -------------------------------------------------------------------
// 调用获取字段名方法,如@CollectionField注解指定了字段名,则返回注解值
String fieldName = FunctionUtil.getFieldNameOption(User::getUserName)
// 打印为:$userName
System.out.println(fieldName);
}
嵌套字段获取
java
public class User {
private Role role;
}
public class Role {
private String roleName;
}
public static void main(String[] args) {
//调用构建嵌套文档对象
FunctionBuilder builder = FunctionUtil.builderFunction();
//调用`add`方法添加字段到FunctionBuilder对象
builder.add(User::getRole).add(Role::getRoleName);
//调用build方法构建字段
String fieldName = builder.build();
// 打印为 role.roleName
System.out.println(fieldName);
// -------------------------------------------------------------------
//调用build方法构建带$字段
String fieldNameOption = builder.build(true);
// 打印为 $role.roleName
System.out.println(fieldNameOption);
}