额外的引号被添加到@Query

时间:2015-04-22 15:25:02

标签: spring-data spring-data-mongodb

我有以下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没有找到参赛作品。如何在办公室之前和之后避免报价?

2 个答案:

答案 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} } ” )

这样,您可以消除多余的引号。