java - 使用 Spring-Data-MongoDB 对嵌套文档建模

标签 java spring mongodb spring-data

我有一个 MongoDB 数据库,它表示公共(public)基因信息的片段,如下所示:

{
    _id: 1,
    symbol: "GENEA",
    db_references: {
        "DB A": "DBA000123",
        "DB B" ["ABC123", "DEF456"]
    }
}

我正在尝试将其映射到一个 @Document 注释的 POJO 类,如下所示:

@Document
Public class Gene {
    @Id 
    private int id;
    private String symbol;
    private Map<String,Object> db_references;
    //getters and setters
}

由于 MongoDB 无模式设计的性质,db_references 字段可以包含一长串可能的键,值有时是数组或其他键值对。我主要关心的是我获取多个 Gene 文档并将它们的 db_references 切片的速度。

我的问题:表示此字段以优化抓取性能的最佳方式是什么?我应该定义一个自定义 POJO 并将该字段映射到它吗?我应该将它设为 BasicDBObject 吗?或者最好根本不使用 Spring Data 映射文档,而只使用 MongoDB Java 驱动程序并解析返回的 DBObjects?

最佳答案

很抱歉您的问题还没有得到解答。

如果 db_references 代表领域内的实际概念,那么最好在类里面获取该领域知识。这总是一个好主意,MongoDB 对此提供了很多帮助。

因此,您可以将此嵌套对象列表存储在 MongoDB 文档中,并在单个查询中获取整个聚合。 Spring Data 也应该处理反序列化。

关于java - 使用 Spring-Data-MongoDB 对嵌套文档建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984022/

相关文章:

java - 为什么我的@RestController 中接收到的实体将值设置为 null 而不是默认值

node.js - 我想找到填充或搜索, Mongoose

java - MongoDB Java 驱动程序 - 对象类型

java - 如何分别为多个 ​​ListView 实现 onItemClick()?

Java - 在 GUI 中使用线程

java - 升级到 Java 7 后 Spring (3.2.0) ConfigurationClassEnhancer 中出现 Stackoverflow 错误

java - Spring在非常简单的程序中忽略@Qualifier

java - 无法使用 ShareIntent 从 Android 中的可绘制文件夹发送图像文件?

java - 数字与 long 相乘时,输出如何变化?

javascript - 在 Mongoose 子文档数组中使用子类