一、MongoDB的概念

        1.定义:开源的文档数据库,具有高性能,高可用,自动拓展,MongoDB是用C++编写的非关系型数据库,可以存储更复杂的数据结构,具有很强的数据描述能力。

        2.主要特性:面向集合存储,易于存储对象类型的数据,支持动态查询,支持完全索引,使用高效的二进制数据存储,文件存储格式为BSON等。

二、MongoDB基本操作

        1.查看所有数据库:show databases;

        2.创建库:use 库名;

        3.查看当前库: db;

        4.删除库:db.dropDataBase();  (不建议)

        5.创建集合:db.createCollection("集合名称");

        6.查看当前库中所有的集合:show collections; 或 show tables;

        7.删除集合:db.集合名称.drop();

        8.增加一条数据:db.集合名称.insert({name:“张三”});

           增加多条数据:db.集合名称.insert({name:“张三”,sex:"男"});

        9.修改数据:db.集合名称.update({查询条件},{$set:{更新内容}},

                        {

                                upset:<boolean>,

                                multi:<boolean>,

                        });

                注意:{multi:true}表示修改所有符合的,{multi:false}表示修改第一条符合的

                            upset:默认为false,如果查询不到数据,就把更新的数据插入

        db.集合名称.update({查询条件},{$inc:{字段名:number(1)}})

        $inc:增加1,只针对整型,浮点型,字符串不能使用!!!

        10.删除数据:

                db.集合名称.remove(

                        <query>,

                        {

                        justOne:<boolean>

                        }

                    )

                删除一条数据:db.集合名称.remove({name:“张三”},{justOne:true});

                删除多条数据:db.集合名称.remove({name:"张三"});

        11.查询操作:

                全查:db.集合名称.find();

        12.MongoDB的or条件

                db.集合名称.find(

                        {

                                $or:[{key1:value1},{key2:value2}]

                        }

        )

        13.MongoDB的and条件:  db.集合名称.find({key1:value1},{key2:value2});

        14.模糊查询:

                包含张的内容:db.集合名称.find({name:/张/})

                以张开头的内容:db.集合名称.find({name:/^张/})

                以张结尾的内容:db.集合名称.find({name:/张$/})

        15.limit和skip操作

                db.集合名称.find().limit(number).skip(number);

三、MongoDB总结

四、Java链接MongDB

        1.首先要导入MongoDB驱动包 

                mongo-java-driver-3.4.2.jar

        2.其次获取链接对象

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

        3.获取库对象

                MongoDatabase db = mc.getDatabase("库名");

        4.获取集合对象

                MongoCollection<Document> collection = db.getCollection("集合名称r");

        5.增删改查操作

        6.关闭链接

                mc.close();

五、Java操作mongodb增删改查

        1.增加操作       

public class AddDemo {

	public static void main(String[] args) {
		
		// 连接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		
		// 库对象
		MongoDatabase db = mc.getDatabase("xuexiao");
		
		// 集合对象
		MongoCollection<Document> collection = db.getCollection("Teacher");
		
		// 新增
		Document document1 = new Document();
		document1.put("name", "张三");
		document1.put("age", 18);
		document1.put("birthday", new Date());
		document1.put("sex", "男");
		Document document2 = new Document();
		document2.put("name", "张三");
		document2.put("age", 18);
		document2.put("birthday", new Date());
		document2.put("sex", "男");
		Document document3 = new Document();
		document3.put("name", "张三");
		document3.put("age", 18);
		document3.put("birthday", new Date());
		document3.put("sex", "男");
		Document document4 = new Document();
		document4.put("name", "张三");
		document4.put("age", 18);
		document4.put("birthday", new Date());
		document4.put("sex", "男");
		
		List<Document> listdoc = new ArrayList<Document>();
		listdoc.add(document1);
		listdoc.add(document2);
		listdoc.add(document3);
		listdoc.add(document4);
		
		// 添加一条数据
//		collection.insertOne(document);
		// 一次添加多条数据
		collection.insertMany(listdoc);
				
		mc.close();

	}
}

   运行结果如下:

        2.删除操作

public class DeleteDemo {
	public static void main(String[] args) {
		
		// 连接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		
		// 库对象
		MongoDatabase db = mc.getDatabase("MongoDay1");
		
		// 集合对象
		MongoCollection<Document> collection = db.getCollection("student");
		
//		Bson gt = Filters.gt("age", 100);
//		Bson exists = Filters.exists("age");
		Bson exists = Filters.exists("age", false);
		
//		DeleteResult deleteOne = collection.deleteOne(new Document("name","张三"));
//		DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
		DeleteResult deleteMany = collection.deleteMany(exists);
		
		System.out.println(deleteMany);
		
		mc.close();
		
		
	}
}

运行结果:

运行前: 

运行后: 

        3.修改操作

public class UpdateDemo {

	public static void main(String[] args) {
		
		// 连接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		
		// 库对象
		MongoDatabase db = mc.getDatabase("MongoDay1");
		
		// 集合对象
		MongoCollection<Document> collection = db.getCollection("student");
		
		
//		Bson eq = Filters.eq("name", "哈哈哈");
		
		// 多条件的
		Bson and = Filters.and(Filters.gte("age", 20),Filters.lte("age", 30));
		
//		UpdateResult updateOne = collection.updateOne(
//						eq, new Document("$set",new Document("age", 20)));
		
		UpdateResult updateMany = collection.updateMany(
				and, new Document("$inc",new Document("age",100)));
		


//		UpdateResult updateOne = collection.updateOne(
//				eq, new Document("$set",new Document("age", 20)),
//					new UpdateOptions().upsert(true));
		
		
		System.out.println(updateMany);
		
		
		
		mc.close();

	}
}

运行结果:

        4.查询操作

public class SelectDemo {

	public static void main(String[] args) {
		
		
		Gson gson = new GsonBuilder().create();
		
		// 连接对象
		MongoClient mc = new MongoClient("localhost", 27017);
		
		// 库对象 -- 获取  创建
		MongoDatabase db = mc.getDatabase("xuexiao");
		
		// 集合对象 -- 获取 创建
		MongoCollection<Document> collection = db.getCollection("Teacher");
		
		// 添加条件
		Bson eq = Filters.regex("name", "张");
		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);
		}

		mc.close();

	}

}

        运行结果:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐