如何使用动态键将文档映射到Spring MongoDb实体类

pde*_*eva 5 java spring mongodb spring-data spring-data-mongodb

我有一个可以包含动态键名的文档:

{
"_id" : ObjectId("51a29f6413dc992c24e0283e"),
"envinfo" : {
    "appName" : "MyJavaApp",
    "environment" : {
        "cpuCount" : 12,
        "heapMaxBytes" : 5724766208,
        "osVersion" : "6.2",
        "arch" : "amd64",
        "javaVendor" : "Sun Microsystems Inc.",
        "pid" : 44996,
        "javaVersion" : "1.6.0_38",
        "heapInitialBytes" : 402507520,
}
Run Code Online (Sandbox Code Playgroud)

envinfo事先不知道这里的键。在Spring Data Mongodb中创建映射此文档的实体类的最佳方法是什么?

Jay*_*ayz 2

这是一种方法。可能还有其他更好的方法。

创建属性映射并将该映射存储在 mongo 中。

public class Env {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private ObjectId id;
    @Field
    private Envinfo envinfo;

    public static class Envinfo {
       @Field
       private String appName;
       @Field
       private Map<String, String> attributes;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您事先知道键,则可以将这些属性添加到 Envinfo 中并将它们保留在属性映射之外。