2017-07-19 91 views
0

我正在嘗試使用json查詢方法進行搜索。例如,我想要通過名稱「EnterpriseA」來搜索企業實體。但是,名稱屬性是內容的一部分,這是一個原始的json。是否有可能執行?如何使用Spring Data在MongoRepository中查詢原始json

內容可以假設值,如:

"content": "{\"name\":\"EnterpriseA\",\"email\":\"[email protected]\",\"address\":[{\"id\":1,\"description\":\"some description...\"},{\"id\":2,\"description\":\"some description...\"}]}" 

這是我的實體:

@Document(collection = "enterprise") 
public class Enterprise { 
    @Id 
    private String id; 

    @Indexed(unique = true) 
    private String content; 

    @Indexed(unique = false) 
    private Long companyId; 
    //... 
} 

我的倉庫:

@Repository 
public interface EnterpriseDao extends MongoRepository<Enterprise, 
String> { 
    @Query("{ 'content' : ?0 }") 
    Enterprise findByName(String name); 
} 

我想了解我是什麼做錯了。

回答

0

您可以使用Document.parse並獲得鑰匙name的值。

喜歡的東西

String content = "{\"name\":\"EnterpriseA\",\"email\":\"[email protected]\",\"address\":[{\"id\":1,\"description\":\"some description...\"},{\"id\":2,\"description\":\"some description...\"}]}"; 
Document doc = Document.parse(content); 
String name = doc.getString("name"); 
Enterprise enterprise = enterpriseDao.findByName(name); 
相關問題