MongoDB实验二 使用java做简单查询

关于MongoDB Compass的使用:

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();
		}
	}
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单Java程序,演示如何使用MongoDB Java驱动程序进行查询。 首先,您需要使用Maven或Gradle等工具将MongoDB Java驱动程序添加到您的项目中。然后,您需要创建一个MongoClient实例,该实例表示与MongoDB服务器的连接。 ``` MongoClient mongoClient = new MongoClient("localhost", 27017); ``` 接下来,您需要选择一个数据库并创建一个MongoDatabase实例。 ``` MongoDatabase database = mongoClient.getDatabase("myDatabase"); ``` 然后,您可以选择一个集合并创建一个MongoCollection实例。 ``` MongoCollection<Document> collection = database.getCollection("myCollection"); ``` 现在,您可以使用MongoCollection实例执行各种查询。例如,以下代码将查询集合中所有文档的数量。 ``` long count = collection.countDocuments(); System.out.println("Total documents in collection: " + count); ``` 您还可以使用MongoCollection实例执行更复杂的查询。例如,以下代码将查询集合中年龄大于30的所有文档。 ``` Document query = new Document("age", new Document("$gt", 30)); List<Document> results = collection.find(query).into(new ArrayList<>()); for (Document doc : results) { System.out.println(doc.toJson()); } ``` 在上面的代码中,我们使用一个查询文档来指定查询条件,然后使用find()方法执行查询。我们使用into()方法将查询结果转换为一个ArrayList。 以上是一个简单MongoDB Java查询的例子,您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值