关于MongoDB Compass的使用:
一、实验内容
用MongoDB API方式,做简单查询。
二、重要提醒
将执行完成语句截图保存,用于完成实验报告。
三、实验要求
在以下要求中选择至少2个,使用Java语言连接MongoDB,实现数据查询,最终把数据输出到前端界面。
(1)找出年龄小于20岁的所有学生
(2)找出年龄小于20岁且是软件学院的学生
(3)找出学生关系中的所有学生
(4)求所有学生的姓名、年龄
(5)找出年龄小于20岁的学生的姓名、性别
(6)检索所有课程情况
(7)检索先行课号为“300001”的课程名
(8)找出年龄大于50岁的老师
(9)找出所有的男老师
(10)找出所有在CS学院的老师
代码
import org.bson.Document;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class lab2 {
static MongoClient mongoClient = null;
static MongoDatabase mgdb = null;
public static void main(String[] args) {
try {
// 链接到MongoDB服务器
mongoClient = new MongoClient("localhost", 27017);
// 链接MongoDB数据库
mgdb = mongoClient.getDatabase("user");
System.out.println("----数据库连接成功----");
System.out.println("当前的数据是 : " + mgdb.getName());
MongoCollection<Document> doc_stu =mgdb.getCollection("student");
MongoCollection<Document> doc_course =mgdb.getCollection("course");
MongoCollection<Document> doc_teacher =mgdb.getCollection("teacher");
FindIterable<Document> iter1=doc_stu.find(new Document("age",new Document("$lt",20)));
System.out.println("1.年龄小于20的学生如下:");
iter1.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("2.年龄小于20且是软件学院的学生如下:");
FindIterable<Document> iter2=doc_stu.find(new Document("age",new Document("$lt",20)).append("dname", "SC"));
iter2.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("3.所有学生关系中的学生:");
FindIterable<Document> iter3=doc_stu.find(new Document());
iter3.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("4.所有学生的姓名、年龄:");
FindIterable<Document> iter4=doc_stu.find(new Document());
iter4.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println("姓名:"+_doc.get("name")+" 年龄:"+_doc.get("age"));
}
});
System.out.println("5.年龄小于20岁的学生的姓名、性别:");
FindIterable<Document> iter5=doc_stu.find(new Document("age",new Document("$lt",20)));
iter5.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println("姓名:"+_doc.get("name")+" 性别:"+_doc.get("sex"));
}
});
System.out.println("6.所有的课程情况:");
FindIterable<Document> iter6=doc_course.find(new Document());
iter6.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("7.先行课号为300001的课程名:");
FindIterable<Document> iter7=doc_course.find(new Document("fcid","300001"));
iter7.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.get("name"));
}
});
System.out.println("8.年龄大于50的老师:");
FindIterable<Document> iter8=doc_teacher.find(new Document("age",new Document("$gt",50)));
iter8.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("9.所有男老师:");
FindIterable<Document> iter9=doc_teacher.find(new Document("sex","M"));
iter9.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
System.out.println("10.所有CS学院的老师:");
FindIterable<Document> iter10=doc_teacher.find(new Document("dname","CS"));
iter10.forEach(new Block<Document>() {
@Override
public void apply(Document _doc) {
// TODO Auto-generated method stub
System.out.println(_doc.toString());
}
});
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
finally {
mongoClient.close();
}
}
}