4

我将 Spring Data 与 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")...

我觉得我错过了一些东西......谢谢!

4

0 回答 0