java - 如何将带有动态键的文档映射到 Spring MongoDb 实体类

标签 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,
}

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

最佳答案

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

创建属性映射并将映射存储在 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;
    }
}

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

关于java - 如何将带有动态键的文档映射到 Spring MongoDb 实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899872/

相关文章:

java - 为 API 方法建议一个更好的名称

java - Hibernate 自引用父子

mongodb - 如何检查数组字段是否包含唯一值或 MongoDB 中的另一个数组?

java - JETT支持多个IF语句吗?

java - 将数据文件的内容读入内存中适当的对象数组中

java - 如何正确测试此方法?(junit)

node.js - 具有单个文档字符串数组字段的服务器端分页

java - 手动分配 ID 时,Spring Data MongoDB 注释 @CreatedDate 不起作用

java - 如何让 Java 编译器告诉我它推断出什么类型?

java - 使用multipart将图像保存到java项目路径