【问题标题】:Nested query in mongodb using spring data使用spring数据在mongodb中嵌套查询
【发布时间】:2016-08-17 14:53:36
【问题描述】:

我正在尝试使用嵌套的Mongodb 查询,但它不起作用。 类似于Spring data mongodb query for subdocument field

但是那里提到的建议不起作用。

请在下面找到我的文件。

@Document
public class Ticket {

  @Id
  private String id;

  @DBRef
  @CascadeSave
  private Customer customer;

  // getters and setters   
}

@Document
public class Customer {

  @Id
  private String id;

  private String firstName;

  // getters and setters
}

public interface TicketRepository extends MongoRepository<Ticket, String> {

  public List<Ticket> findByCustomerFirstName(String firstName);

  }

findByCustomerFirstNamefindByCustomer_FirstName 我都试过了,但还是不行。有什么建议吗?

【问题讨论】:

    标签: mongodb spring-boot spring-data


    【解决方案1】:

    这些建议是正确的,它应该可以工作......

    官方文档按照你的做法解释:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-methods.query-property-expressions

    属性表达式只能引用 托管实体,如前面的示例所示。在创建查询时 时间你已经确保解析的属性是 托管域类。但是,您也可以通过以下方式定义约束 遍历嵌套属性。假设一个人有一个地址 邮政编码。在这种情况下,方法名称为

    List&lt;Person&gt; findByAddressZipCode(ZipCode zipCode);

    创建 属性遍历x.address.zipCode

    只有一件事,从 Customer 中删除 @Document 并尝试一下,Mongodb 不支持连接查询(我不确定现在是否支持)...所以你的文档应该是 @ 987654327@ 并且它必须有一个 embbebed document Customer 作为内部对象,而不是在不同的文档中。

    【讨论】:

    • 非常感谢您的回复。我忘了提及我用于客户的@DBRef 注释。原因是因为我也想访问独立于票证的客户。你能建议任何替代方法吗
    • 是的,它适用于内部文档 :) 但我正在寻找一种链接文档的方法 –
    猜你喜欢
    • 2021-12-15
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多