2014-02-05 34 views
0

我正在使用SpringRepository來查詢mongo數據庫。我有一個students收集與文件如下。返回內部對象的一個​​元素Spring庫,Mongodb

{ 
    "_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

這應該工作:(未經測試的代碼...)

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

@Query預測的基本語法可以從this question發現here,投影語法。

請注意,您仍將獲得一個Student對象,其中null映射到所有尚未提取的字段。如果你不想這樣做,你將不得不自己實現查詢(這並不難),並返回方法中獲取文檔的必填字段。

+0

我無法直接獲取Subject對象嗎? –

+0

所有我知道不是通過註釋 – chk