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

嵌套文档字段

在获取嵌套文档字段时,是不可以通过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);
}