java - 如何使用 Spring Data 引用 mongodb 中的嵌入文档

标签 java mongodb spring-data mongodb-java

如何引用 mongodb 中的嵌入文档?
想象一下,我有一个 QuestionAnswerOptions 文档,我想将用户答案保存到 UserAnswer 文档中。
现在,我应该如何指向嵌入的 AnswerOptions 文档中的该选项?
有什么最佳实践吗?

{
        "_id":"1"
        "questionTitle":"Question1"
        "answerOptions":
        [
        {
            "optionTitle":"option1"
        },
        {
            "optionTitle":"option2"
        },
        {
            "optionTitle":"option3"
        }
        ]

    },
{
        "_id":"2"
        "questionTitle":"Question2"
        "answerOptions":
        [
        {
            "optionTitle":"option1"
        },
        {
            "optionTitle":"option2"
        }
        ]

    },
{
        "_id":"3"
        "questionTitle":"Question3"
        "answerOptions":
        [
        {
            "optionTitle":"option1"
        },
        {
            "optionTitle":"option2"
        }        
        ]

    }

最佳答案

我不知道我的方式是否被认为是最佳实践,但这就是我的做法:

public class Question {
    private String id;
    private String questionTitle;
    private List<Answer> answerOptions;
}

public class Answer {
    private String optionTitle;
}

现在您可以定义一个 MongoRepository 来查询问题:

public interface QuestionRepository extends MongoRepository<Question,String> {
    List<Question> findByAnswerOptionsOptionTitle(@Param("answerOptions.optionTitle") String option)
}

您可能还会发现有关 MongoRepositories 中的查询的部分很有用: http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-methods.query-property-expressions

关于java - 如何使用 Spring Data 引用 mongodb 中的嵌入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36921931/

相关文章:

java - vlcj libvlc 流媒体桌面在一段时间后停止

java - dateTimeFormat 的有效掩码模式

java - spring-data 多数据源配置运行但插入错误的数据源

java - 在执行流式查询时修改 MySql 数据库

java - spring MongoRepository 查询正则表达式

java - 尽管有错误,你可以强制编译吗

java - JSP 中的 UTF-8 URI 编码损坏

node.js - MongoDB:没有锁定?

node.js - MEAN Stack : Very specific web requests to generic model methods, 或具有非常具体模型方法的通用 Web 请求?

java - 如何获取文档的另一个嵌套列表的嵌套记录?