Java操作mongodb增删改查的基本操作

本文详细介绍了如何使用Java连接MongoDB数据库,包括建立连接、查看库与集合、添加数据(单条与多条)、删除数据(使用Filters条件)以及修改和查询数据的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.java连接MongoDB

         1. 导入MongoDB驱动包:

                

         2.获取连接对象:

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

                这里的 "localhost" 表示连接的服务器地址,27017 为端口号。

        3.关闭连接:

                mc.close();

二.查看库,查看集合

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

		MongoIterable<String> listDatabaseNames = mc.listDatabaseNames();
		MongoCursor<String> iterator = listDatabaseNames.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}

        2. 使用库查看库中的集合


        MongoDatabase database = mc.getDatabase("myschool");
		
		MongoIterable<String> listCollectionNames = database.listCollectionNames();
		for(String s:listCollectionNames) {
			System.out.println(s);
		}

        若指定的数据库不存在,mongoDB将会在第一次插入文档时创建数据库。

三.添加数据

       1. 插入一条数据:

(1)

        //获取连接对象
		MongoClient mc=new MongoClient("localhost",27017);
		//库对象
		MongoDatabase database = mc.getDatabase("myschool");
		//集合对象
		MongoCollection<Document> collection = database.getCollection("student");
		
		//新增
		Document document1 = new Document();
		document1.put("name","张三" );
		document1.put("birthday",new Date() );
		document1.put("sex","男" );
		document1.put("age",16 );
        
        //增添一条数据
		collection.insertOne(document1);
        
        mc.close();

(2)

        导入gson的jar包:

                                    

         创建student类对象

        
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();

		// 连接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		
		// 库对象
		MongoDatabase db = mc.getDatabase("myschool");
		
		// 集合对象
		MongoCollection<Document> collection = db.getCollection("student");
		
		Student s = new Student();
		s.setBirthday(new Date());
		s.setClassid(100);
		s.setSid(1);
		s.setSname("张三三");
		s.setSsex("男");

        //将数据转换成json格式
		String json = gson.toJson(s);
		collection.insertOne(Document.parse(json));

		mc.close();

        2. 插入多条数据:

        //获取连接对象
		MongoClient mc=new MongoClient("localhost",27017);
		//库对象
		MongoDatabase database = mc.getDatabase("myschool");
		//集合对象
		MongoCollection<Document> collection = database.getCollection("student");
		
		//新增
		Document document1 = new Document();
		document1.put("name","张三" );
		document1.put("birthday",new Date() );
		document1.put("sex","男" );
		document1.put("age",16 );
		
		Document document2 = new Document();
		document2.put("name","张三" );
		document2.put("birthday",new Date() );
		document2.put("sex","男" );
		document2.put("age",16 );
		
		ArrayList<Document> listdoc = new ArrayList<Document>();
		listdoc.add(document1);
		listdoc.add(document2);

		//添加多条数据
		collection.insertMany(listdoc);
		
		
		mc.close();

四.删除数据

        //第一种删除
		//DeleteResult deleteOne = collection.deleteOne(new Document("name","张三"));
		//DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
		
		//第二种删除
		//Bson gt = Filters.gt("age", 30);
		  Bson exists = Filters.exists("name", false);
		
		//DeleteResult deleteMany = collection.deleteMany(gt);
		  DeleteResult deleteMany = collection.deleteMany(exists);
		  System.out.println(deleteMany);
		

Filters :该过滤器类为所有的MongoDB的查询操作静态工厂方法。每个方法返回BSON类型,又可以传递给期望一个查询过滤器的任何方法的一个实例。

eq:匹配等于指定值的值。 gt:匹配大于指定值的值。 gte:匹配大于或等于指定值的值。 lt:匹配小于规定值的值。 lte:匹配是小于或等于规定值的值。 ne:匹配不等于指定值的所有值。 in:匹配任何在数组中指定的值。 nin:没有匹配数组中的规定值

五.修改数据

//				Bson eq = Filters.eq("name", "张三");
				
				//修改一条数据
//		UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",22)));
//				
//				System.out.println(updateOne);
				
				//修改多条数据
//		UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",22)));
//				
//				System.out.println(updateMany);
				
				//修改里面的添加
//				Bson eq = Filters.eq("name", "小七");
//		UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",22)),new UpdateOptions().upsert(true));
//				System.out.println(updateOne);
				
				//多条件
				Bson gte = Filters.gte("age", 20);
				Bson lte = Filters.lte("age", 30);
				Bson and = Filters.and(gte,lte);
		
		UpdateResult updateMany = collection.updateMany(and, new                                                                                        
        Document("$set",new Document("sex","保密")));
				//累加
		UpdateResult updateMany = collection.updateMany(and, new Document("$inc",new Document("age",10)));
				System.out.println(updateMany);

六.查询数据

        // 添加条件
        //使用正则表达式进行模糊查询
		Bson eq = Filters.regex("name", "张");
        //1升序 -1降序
		Document document = new Document("birthday",-1);
		//分页
        // .limit(2).skip(2)
		FindIterable<Document> find = collection.find(eq).sort(document);

//		for(Document doc : find) {
//			System.out.println(doc);
//		}
		
		List<Student>  slist = new ArrayList<Student>();
		
		MongoCursor<Document> iterator = find.iterator();
		
		
		while(iterator.hasNext()) {
//			Student s =  new Student();
			
			Document next = iterator.next();
//			s.setSname(next.getString("name"));
//			s.setSsex(next.getString("sex"));
//			s.setSid(next.getInteger("sid"));
			
			// 参数1 Json 字符串
			// 参数2 需要的对象的类型
			
			String json = next.toJson();
			System.out.println(json);
			Student s = gson.fromJson(json, Student.class);
			
			slist.add(s);
		}
		
		
		for(Student ss : slist){
			System.out.println(ss);
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值