查询Spring Data MongoDB中嵌入式文档的数组

use*_*234 1 spring-data-mongodb

我有一个简单的问题:

我如何表达这个查询

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
Run Code Online (Sandbox Code Playgroud)

查询嵌套在数组中的文档

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

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

cha*_*cou 5

使用Spring Data存储库,您可以使用:

1-@Query批注

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

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)));
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关如何实现此方法的更多材料。}