Java中操作MongoDB的方法

Java中操作MongoDB的方法

MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数
据库当中功能最丰富,最像关系数据库的。

为什么学习MongoDB

MongoDB解决Mysql 的“三高”问题:
1.对数据库高并发写入需求
2.对海量数据高效率存储访问需求
3.对数据库高扩展和高可用的需求
MongoDB 实际应用:
1.社交场景,比如朋友圈,附近的人的地点的存储
2.游戏场景,比如用户当前装备,得分等
3.物流场景,比如快递的位置,状态,途径
4.视频场景,比如直播中的点赞数和互动留言等

直入主题,我们来了解一下java操作MongoDB的方法

在链接数据库时和MySql的操作很相似

1.导入驱动包

2.获取链接对象

MongoClient mongoClient = new MongoClient("localhost",27017);

3.关闭连接

mongoClient.close();

如果数据库不存在,则创建数据库,否则切换到指定数据库。

在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档
(记录),集合才会真正创建。
MongoDB数据类型

在这里插入图片描述

查看库,查看集合

1.查看链接的MongoDB中的所有的库

MongoIterable<String> deslist = mongoClient.listDtabaseNames();
	for(String db : dblist){
		System.out.prinln(db);
	}

2.使用库查看库中集合

MongoDatabase bbsDB = mongoClient.getDatabase("bbs");

MongoIterable<String> collist =bbsDB.listDtabaseNames();
	for(String s : collist){
		System.out.prinln(db);
	}

插入数据

public static void main(String[] args) {
	
		// 数据
		Student s = new Student();
		s.setBirthday(new Date());
		s.setClassid(100);
		s.setSid(1);
		s.setSname("张三");
		s.setSsex("男");
		
		// Mongo操作
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		
		// 创建一个document对象
		
		Document doc = new Document();
		doc.put("sid", s.getSid());
		doc.put("sname", s.getSname());
		doc.put("birthday", s.getBirthday());
		doc.put("ssex", s.getSsex());
		doc.put("classid", s.getClassid());
		// 插入数据
		table.insertOne(doc);

		// 释放资源
		mc.close();
	}

删除数据

public static void main(String[] args) {
		
		// Mongo操作
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		
		Bson eq = Filters.eq("sname", "哈哈");
		
		DeleteResult deleteMany = table.deleteMany(eq);
		System.out.println(deleteMany.getDeletedCount());

		if(deleteMany.getDeletedCount() > 0) {
			System.out.println("删除成功");
		}else {
			System.out.println("删除失败");
		}
		mc.close();
	}

修改数据

Filters
该过滤器类为所有的MongoDB的查询操作静态工厂方法。每个方法返回BSON类型,又可以传递给期
望一个查询过滤器的任何方法的一个实例。
eq:匹配等于指定值的值。
gt:匹配大于指定值的值。
gte:匹配大于或等于指定值的值。
lt:匹配小于规定值的值。
lte:匹配是小于或等于规定值的值。
ne:匹配不等于指定值的所有值。
in:匹配任何在数组中指定的值。
nin:没有匹配数组中的规定值。

public static void main(String[] args) {
		
		// Mongo操作
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		
		// 条件对象   where ssex = 男 and (classid = 1 or classid = 2)
		Bson eq = Filters.and(
					Filters.eq("ssex", "男"), 
					Filters.or(
							Filters.eq("classid", 1),
							Filters.eq("classid", 2)
							)
					);

		// 要修改的数据
		Document doc = new Document();
		doc.put("$set", new Document("sname","哈哈"));

//		UpdateResult updateOne = table.updateOne(eq, doc);
		UpdateResult updateMany = table.updateMany(eq, doc);
		System.out.println(updateMany);
		
		mc.close();

	}

查询数据

全查:

public static void main(String[] args) {
		
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		

		FindIterable<Document> find = table.find();

		for(Document doc : find) {
			System.out.println(doc);
		}

		mc.close();
			
	}

条件查询:

public static void main(String[] args) {
		
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		
		Bson b1 = Filter.and(
			Filters.eq("cid","1"),
            Filters.get("sname","张三"),
		);

		FindIterable<Document> find = table.find(b1);

		for(Document doc : find) {
			System.out.println(doc);
		}

		mc.close();
			
	}

模糊查询

public static void main(String[] args) {
		
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		
		Bson b1 = Filter.and(
			Filters.regex("sname","张"),
         
		);

		FindIterable<Document> find = table.find(b1);

		for(Document doc : find) {
			System.out.println(doc);
		}

		mc.close();
			
	}

分页查询

public static void main(String[] args) {
		
		// 获取Mongo的链接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		// 获取库对象
		MongoDatabase db = mc.getDatabase("myschool");
		// 获取表对象
		MongoCollection<Document> table = db.getCollection("student");
		//1升序 -1降序
		Bson b1 = new Document("id",-1);

		FindIterable<Document> find = table.find().sort(b1);

		for(Document doc : find) {
			System.out.println(doc);
		}

		mc.close();
			
	}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值