Java连接MongoDB,java对MongoDB的增删改查操作

Java操纵MongoDB

      • Java操纵MongoDB
        • 1、Java连接MongoDB
        • 2、获取数据库
        • 3、获取集合
        • 4、创建库创建集合及插入数据
        • 5、删除数据
        • 6、修改数据
        • 7、查询数据

Java操纵MongoDB

1、Java连接MongoDB

1、创建java项目

然后在下面创建lib文件夹(Folder)用于存放jar包;并且将名为mongo-java-driver-3.4.2.jar的jar包拷入后右键Build Path,导包的工作就完成了

Java连接MongoDB,java对MongoDB的增删改查操作_第1张图片
2、编写代码

package com.li.conn;

import com.mongodb.MongoClient;

public class ConnDemo {
	
	public static void main(String[] args) {
        //创建连接
		MongoClient mc = new MongoClient("localhost",27017);
		
		System.out.println(mc);
		
        //关闭资源
		mc.close();
	}
}

控制台出现下面内容证明连接成功

Java连接MongoDB,java对MongoDB的增删改查操作_第2张图片

2、获取数据库

1、导包(同上)

2、编写代码

		//1.创建连接
		MongoClient mc = new MongoClient("localhost",27017);
		
		//获取数据库
		
		//方式一
		List<String> dataList = mc.getDatabaseNames();		
		for(String nameString : dataList) {
			System.out.println(nameString);
		}
		
		MongoIterable<String> dnamesIterable =  mc.listDatabaseNames();
		//方式二
		MongoCursor<String> iterator =  dnamesIterable.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		
		//方式三
		for (String x : dnamesIterable) {
			System.out.println(x);
		}
3、获取集合
MongoDatabase db = mc.getDatabase("myschool");
		MongoIterable<String> cnames = db.listCollectionNames();
		
		for(String x : cnames) {
			System.out.println(x);
		}
4、创建库创建集合及插入数据
//创建库  和  集合
		MongoDatabase db = mc.getDatabase("javaee2310");
		System.out.println(db);
		
		MongoCollection col = db.getCollection("person");
		
//		System.out.println(col);
		
		//插入数据
//		col.insertOne(new Document("name","李竟坡"));
//		System.out.println("新增成功");
		
		//以传创建Document的形式插入一条数据
		Document doc = new Document();
		doc.append("name", "张三");
		doc.append("age", 18);
		doc.append("sex", "男");
		doc.append("bir", new Date());
		doc.append("score", 99.9);
		
//		col.insertOne(doc);
		System.out.println("一条数据插入");
		
		
		//插入多条数据
		Document doc1 = new Document();
		doc1.append("name", "李四");
		doc1.append("age", 88);
		doc1.append("sex", "男");
		doc1.append("bir", "1999-1-1");
		doc1.append("score", 100.1);
		
		Document doc2 = new Document();
		doc2.append("name", "王五");
		doc2.append("age", 30);
		doc2.append("sex", "女");
		doc2.append("bir", new Date());
		doc2.append("score", 10.8);
		
		Document doc3 = new Document();
		doc3.append("name", "赵六");
		doc3.append("age", 16);
		doc3.append("sex", "女");
		doc3.append("bir", new Date());
		doc3.append("score", 80.5);
		
		List<Document> doclist = new ArrayList<Document>();
		doclist.add(doc1);
		doclist.add(doc2);
		doclist.add(doc3);
		
//		col.insertMany(doclist);
		System.out.println("插入成功");

**对Bson数据和Document的解释:**Mongo的insertMany和insertOne方法中后面需要的参数是Document类型的,而Document又继承自Bson。
在这里插入图片描述

public static void main(String[] args) {
		
		MongoClient mongoClient = new MongoClient("localhost",27017);		
		MongoDatabase database = mongoClient.getDatabase("myschool");
		MongoCollection<Document> collection = database.getCollection("teacher");	
    
		Document document = new Document();	
		document.append("name", "lijingpo");
		document.append("age", 18);
		document.append("document", "真帅啊");
		System.out.println("document" + document);
		
		Gson gson = new Gson();
    //将document对象变成json字符串
		String json = gson.toJson(document);
		System.out.println("json" + json);
    
    //将json字符串变为实体类对应的对象
		Teacher fromJson = gson.fromJson(json, Teacher.class);
    
    //获取实体类中的属性并进行打印
		int age = fromJson.getAge();
		String document2 = fromJson.getDocument();
		String name = fromJson.getName();
		System.out.println("Teacher" + fromJson);
		System.out.println("name" + name);
		System.out.println("age" + age);
		System.out.println("document2" + document2);
	}
5、删除数据
		//创建连接
		MongoClient mc = new MongoClient("localhost",27017);
		//获取数据库
		MongoDatabase md = mc.getDatabase("myschool");		
		//获取集合
		MongoCollection col = md.getCollection("teacher");		
		//删除一个
        DeleteResult dr = col.deleteOne(new Document("name","张三"));		
		//删除多个
		DeleteResult dr = col.deleteMany(new Document("name","李四"));	
		System.out.println(dr);
		mc.close();
6、修改数据
		//创建连接
		MongoClient mc = new MongoClient("localhost",27017);	
		//获取数据库
		MongoDatabase md = mc.getDatabase("myschool");		
		//获取集合
		MongoCollection col = md.getCollection("teacher");	
//相当于修改的条件
		//等于
		Bson eq = Filters.eq("name","张四");
		//小于
		Bson lt = Filters.lt("age", 50); 	
//相当于修改字段
		Document doc = new Document();
//		Document eq = new Document("name","张四");
		doc.append("$set", new Document("age",90));
		
/**
如果想修改一次修改一个文档中的多个域(如果对相关概念不理解看一之前写的关于mongo的博客),就需要嵌套;
不能两次append,原因是后一个修改会将前面的修改覆盖掉,意味着指挥保留最后一条修改域。
*/
		//下面的书写是错误的(只会修改生日,年龄不会修改)
		doc.append("$set",new Document("age",5));
		doc.append("$set",new Dounment("birthday",2000-1-1))
        UpdateResoult up = col.updateOne(eq,doc);
		
		//正确写法
		//将姓名为张四的年龄修改为5岁,生日修改为2000-1-1
		Document eq = new Document("name","张四");
		Document doc1 = doc.append("$set", new Document("age",5).append("birthday", 2000-1-1));
		UpdateResult up = col.updateOne(eq,doc1);

		//修改一条
		UpdateResult up = col.updateOne(eq, doc);
		
		//修改多条
		UpdateResult up = col.updateMany(lt, doc);
		System.out.println(up);
		mc.close();
7、查询数据
		MongoClient mc = new MongoClient("localhost",27017); 
		MongoDatabase md = mc.getDatabase("javaee2310");		
		MongoCollection col = md.getCollection("person");	
		//全查
		FindIterable<Document> find = col.find();	
		//单条件查询
		FindIterable<Document> find = col.find(Filters.eq("sex","男"));		
		//多条件and查询
		Bson bson = Filters.and(
				Filters.eq("sex","男"),
				Filters.lt("age", 20)
		);
		//多条件or查询
		Bson bson = Filters.or(
				Filters.eq("sex","男"),
				Filters.lt("age", 20)
		);
		//模糊查询
		//名字中包含李的
		Bson bson = Filters.regex("name", "李");
		//名字以李开头的
		Bson bson = Filters.regex("name", "^李");
		//名字以李结尾的
		Bson bson = Filters.regex("name", "李$");
		
		FindIterable<Document> find = col.find(bson);
		
		//分页查询
		FindIterable<Document> find =  col.find().limit(1).skip(1);
		//排序
		FindIterable<Document> find = col.find().sort(new Document("age",1));
		
		for(Document d : find) {
			System.out.println(d);
		}
	}

你可能感兴趣的:(MongoDB,java,mongodb)