springboot中mongodb查询内嵌list
时间: 2024-09-11 13:13:57 浏览: 23
Spring Boot 中集成 MongoDB 时,可以通过 MongoDB 的查询功能来查询内嵌的 List。MongoDB 支持多种查询方式,其中 MongoDB Java 驱动提供了丰富的操作类,比如 `Criteria`、`Query` 等,可以帮助我们构建复杂的查询条件。
对于内嵌 List 的查询,MongoDB 提供了两种主要的查询方式:点表示法和数组操作符。
1. 点表示法:当你知道 List 中具体的元素时,可以使用点表示法来精确匹配。例如,如果你有一个文档结构如下:
```json
{
"name": "张三",
"hobbies": ["阅读", "旅游"]
}
```
如果你想查询 `hobbies` 中包含 "阅读" 的文档,可以使用以下代码:
```java
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.MongoTemplate;
// ...
@Autowired
private MongoTemplate mongoTemplate;
public List<User> findUsersWithHobby(String hobby) {
Query query = new Query(Criteria.where("hobbies").is(hobby));
return mongoTemplate.find(query, User.class);
}
```
2. 数组操作符:对于 List 中的元素进行模糊查询或者特定条件查询,可以使用 `$all`、`$in` 等操作符。
- 使用 `$all` 查询 List 中包含所有指定元素的文档:
```java
Query query = new Query(Criteria.where("hobbies").all("阅读", "旅游"));
```
- 使用 `$in` 查询 List 中包含任一指定元素的文档:
```java
Query query = new Query(Criteria.where("hobbies").in("阅读", "写作"));
```
结合 Spring Data MongoDB 的强大功能,你可以很容易地构建复杂的查询,并将它们应用到你的应用程序中。