【发布时间】:2019-10-05 15:32:18
【问题描述】:
我一直在学习自己在 Spring Boot 中的 MongoDB 实现。 但是,我遇到了复杂查询的问题。
我找不到任何正确的解决方案来解决如何从 Spring boot 实现对 MongoDB 的复杂查询。
我正在使用MongoRepository接口实现查询数据库。
假设我有三个集合:
- Person - 1 Person 可以拥有许多 Pet。
- 宠物 - 1 只宠物可以拥有 1 个 PetToy 和 1 个拥有他的人。
- PetToy - 1 个 PetToy 可以属于 1 个 Pet。
POJO 类如下
我想达到什么目的?
我想查询,它会返回一个 Person,他的宠物有一个玩具 (PetToy),名字叫“Teddy”。
我无法找到一种方法来做到这一点。此外,甚至使用如此复杂的查询是最佳实践,还是在 MongoDB 中编写更多的小查询更好?
POJO:
@Document
@Data
@ToString
public class Person {
@Id
private String id;
private String firstname;
private String lastname;
private int age;
@DBRef
private Pet pet;
}
@Document
@Data
@ToString
public class Pet {
@Id
private String id;
private String name;
private int age;
@DBRef
private List<PetToy> toys;
}
@Document
@Data
@ToString
public class PetToy {
@Id
private String id;
private String name;
}
我尝试过使用 MongoRepositories;但是,我无法进行复杂的查询。
如何从 Spring Boot 向 MongoDB 写入这样的查询?
非常感谢您。
【问题讨论】:
-
在 Person->Pet 和 Pet->Pet Toys 之间的关系中使用 @DBRef 是否有任何理由代替嵌入属性?
-
我使用了@DBRef,因为我想知道如何连接来自不同集合的两个文档。这只是一个例子。
标签: spring mongodb spring-boot mongodb-query spring-data