hel*_*one 0 mongodb nosql mongodb-java
我有两个类调用School,并Student为你看到的.我想搜索"学校名称是bla bla bla的学生"和"学生的成绩高于90"的学校.我读了一些文件,但我有点困惑.
public class School extends BasicDBObject {
private int id;
private String name;
private String number;
private List<Student> studentList = new ArrayList<Student>();,
//getter and setters
}
public class Student extends BasicDBObject{
private int id;
private String name;
private String grade;
private School school;
//getter and setters
}
Run Code Online (Sandbox Code Playgroud)
MongoDB不是关系数据库.它不支持连接.要模拟连接,您必须查询第一个集合,获取结果,然后使用$in填充了第一个查询返回的文档的适用键值的大型查询来查询第二个集合.这听起来既缓慢又丑陋,因此应该设计数据库模式以避免它.
对于您的示例,我会将学校名称添加到Student文档中.这将允许使用单个查询来满足您的两个用例.
任何来自关系数据库背景的人现在会说"但这是一种冗余!你违反了第二种正常形式!".这是事实,但规范化是特定于关系数据库的设计模式.它不一定适用于面向文档的数据库.那么哪些设计模式适用于面向文档的数据库?艰难的电话.这是一项新技术.我们仍然在想这个问题.
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |