我有以下JSON结构:
ssh-agent
我想根据类型动态查询电子邮件,例如办公室或私人。当我使用以下命令时:
{
"communication": {
"office": {
"email": "test@example.com"
},
"private": {
"email": "test2@example.com"
},
}
}
@Query(value = "{ 'communication.?0.email' : ?1 }")
Object findByEmail(String type, String email);
转换为
'communication.?0.email'
并且mongo没有找到参赛作品。如何在办公室之前和之后避免报价?
答案 0 :(得分:1)
简单的答案是春天mongo不支持你正在寻找的东西。为什么你没有将所有内容作为参数传递,而不是如下所示。
@Query(value =“{'communication.?0.email':?1}”) Object findByEmail(String type,String email);
电子邮件值
type= "communication." + type + ".email"
答案 1 :(得分:1)
使用SpEL应该适合您的需求:
@Query(value = "?#{ { 'communication.' + [0] + '.email' : ?1 } }")
主要更改以黑体显示: @Query(value =“ ?#{ {'communication。'+ [0] +' .email':?1} } ” )
这样,您可以消除多余的引号。