我正在使用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对象?
答案 0 :(得分:0)
这应该有效:(未经测试的代码......)
@Query(value="{ 'subjects.subjectName' : ?0 }", fields="{ 'subjects.$' : 1 }")
List<Student> findBySubjectName(String subjectName);
可以找到@Query
投影的基本语法here,this question的投影语法。
请注意,您仍然会获得一个Student
对象,null
映射到尚未获取的所有字段。如果你不想那样,你必须自己实现查询(这并不难)并在你的方法中返回所提取文档的必填字段。