返回内部对象Spring Repository,Mongodb的元素

时间:2014-02-05 12:33:02

标签: java spring mongodb

我正在使用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);

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

1 个答案:

答案 0 :(得分:0)

这应该有效:(未经测试的代码......)

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

可以找到@Query投影的基本语法herethis question的投影语法。

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