使用Spring Data Read Converters访问MongoDB文档中的嵌套字段

时间:2012-11-13 17:02:55

标签: java mongodb spring-data spring-data-mongodb

我正在使用Spring数据和MongoDB,我在访问Mongo文档中的嵌套元素时遇到了问题,并将这些元素转换为Java字段。以下Spring查询:

Query query = new Query().limit(1);
query.fields().include("a.d").exclude("_id");
mongoTemplate.find(query, MyObject.class);

返回以下DBObject:

{ "a" : { "d" : { "e" : 7.0 , "f" : 9.0}}}

我只对“e”和“f”感兴趣所以我决定使用Converter<DBObject, MyObject>。这是我的转换器功能:

public MyObject convert(DBObject dbObject) {

    DBObject dboA = (DBObject) dbObject.get("a");
    DBObject dboD = (DBObject) dboA.get("d");

    MyObject myObj = new MyObject();
    myObj.setE((Double) dboD.get("e"));
    myObj.setF((Double) dboD.get("f"));

    return myObj;
}

假设我有深度为20/30的嵌套文档,我的转换器会很难写。有没有办法做到这一点不那么笨拙和优雅?

是否可以使用注释执行此操作?像@Field(value = "a.d.e") ...

这样的东西

我觉得我错过了什么......谢谢!

0 个答案:

没有答案