春季数据mongodb

时间:2019-02-15 20:41:16

标签: spring-data-mongodb

我有一个简单的问题:

如何表达此查询

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

Query for a Document Nested in an Array

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

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

1 个答案:

答案 0 :(得分:2)

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

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)));

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