Spring Data MongoDB:动态字段名称转换器

时间:2018-02-03 17:17:15

标签: spring spring-boot spring-data-mongodb

如何动态设置MongoDB文档字段名称(不使用@Field)?

@Document
public class Account {
    private String username;
}

例如,字段名称应大写。结果:

{"USERNAME": "hello"}

我希望这个动态转换器可以处理任何文档,因此不需要使用泛型的解决方案。

1 个答案:

答案 0 :(得分:0)

这有点奇怪的要求。您可以使用Mongo Listener生命周期事件docs

@Component
public class MongoListener extends AbstractMongoEventListener<Account> {

  @Override
  public void onBeforeSave(BeforeSaveEvent<Account> event) {
     DBObject dbObject = event.getDBObject();
     String username = (String) dbObject.get("username");// get the value

     dbObject.put("USERNAME", username);
     dbObject.removeField("username");
     // You need to go through each and every field recursively in  
     // dbObject and then remove the field and then add the Field you  
     // want(with modification) 
  }
}

这有点笨拙,但我相信没有干净的方法可以做到这一点。