【问题标题】:Return an element of inner object Spring Repository, Mongodb返回内部对象Spring Repository,Mongodb的一个元素
【发布时间】:2014-02-05 12:33:02
【问题描述】:

我正在使用 SpringRepository 来查询 mongo db。我有一个 students 集合,其中包含如下文档。

{
    "_id" : ObjectId("52f2139ee4b0384b7402c520"),
    "subjects": [
         {
             "subjectId" : "s001",
             "subjectName" : "maths"
         },
         {
             "subjectId" : "s002",
             "subjectName" : "science"
         },             
    ]
}

我将使用 Spring Repository 查询此集合以获取主题。我可以得到一个这样的特定学科的学生名单

@Query("{ 'subjects.subjectName' : ?0 }")
List<Student> findBySubjectName(String subjectName);

但如果我只想要主题,如何返回与主题名称匹配的主题对象?

【问题讨论】:

    标签: java spring mongodb


    【解决方案1】:

    这应该可以工作:(未经测试的代码...)

    @Query(value="{ 'subjects.subjectName' : ?0 }", fields="{ 'subjects.$' : 1 }")
    List<Student> findBySubjectName(String subjectName);
    

    @Query 的基本投影语法可以在here 中找到,this question 的投影语法。

    请注意,您仍将获得一个Student 对象,其中null 映射到所有尚未获取的字段。如果您不希望这样,您将不得不自己实现查询(这并不难)并在您的方法中返回所获取文档的必填字段。

    【讨论】:

    • 不能直接获取 Subject 对象吗?
    • 我所知道的不是通过注释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多