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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询spring数据mongodb中嵌入文档的数组相关的知识,希望对你有一定的参考价值。

我有一个简单的问题:

我该如何表达这个查询

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

Query for a Document Nested in an Array

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

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

答案

使用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的资料。 }

以上是关于查询spring数据mongodb中嵌入文档的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌入式数组mongodb中查询嵌入式文档

MongoDB(12)- 查询嵌入文档的数组

Hibernate repo 查询访问 mongodb 嵌入文档

用于嵌入式集合的 MongoDB 首选模式。文档与数组

过滤 MongoDB 中的嵌入式数组

用 MongoDB 嵌入集合(子文档数组)违反 REST?