查询 spring 数据 mongodb 中嵌入文档的数组

query array of embedded documents in spring data mongodb

我有一个简单的问题:

如何表达这个查询

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )

Query for a Document Nested in an Array

在 spring 数据 mongoDB 中,最好使用 QueryDSL,但也欢迎使用其他方式。

到目前为止,我所有的查询都与数组中任何嵌入文档的字段匹配,但我需要在同一个上匹配这两个字段。

使用 Spring 数据存储库,您可以使用:

1 - @Query 注释

@Query("{ 'instock': { 'warehouse': ?0, 'qty': ?1 } }")
List<YourClass> findByInstock(String warehouse, int qty);

2 - 自定义存储库方法实现

List<YourClass> findByInstock(String warehouse, int qty) {
  return mongoTemplate.find(Query.query(Criteria.where("instock").elemMatch(Criteria.where("warehouse").is(warehouse).and("qty").is(qty)));

您可以找到更多关于如何实施此方法的 material here。 }