如何在MongoDB实体上为Spring Data MongoDB映射带动态密钥的JSON?

时间:2017-06-14 16:42:39

标签: java json mongodb spring-data-mongodb

大家?

我有一个具有以下结构的JSON:

@Id
private String id;

@Field
private Map<String, Cidades> map;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public Map<String, Cidades> getMap() {
    return map;
}

public void setMap(Map<String, Cidades> map) {
    this.map = map;
}

上面的代码代表了我的MongoDB中存储的三个文档示例。

请注意,键(Recife,Cuiabá和Santos)在此架构中是动态的。

我的问题是如何使用Spring Data MongoDB在实体中映射这些动态键?我尝试了以下方法:

{{1}}

但是当Spring Repository进行查询时,map变量返回null。

我的代码出了什么问题?

最好的问候。

1 个答案:

答案 0 :(得分:0)

不,你不能。如果要将这些文档映射到对象,则应该具有静态键。这里可能的解决方案是使用简单的操作检索文档:

Iterable<BasicDBObject> objects = mongoOperations.find(query, BasicDBObject.class, "collection");

然后手动将其转换为您的对象。

objects.stream()
   .map(obj -> new Entity(...)
   .collect(Collectors.toList());