java操作mongodb的常用方法

MongoDB的介绍

        2007年10月,MongoDB由10gen团队所开发。2009年2月首度推出。 基于分布式文件存储的数据库由C++语言编写。旨在为WEB应用提供可扩展的高性 能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数 据库当中功能最丰富,最像关系数据库的。

优点:

1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所 谓的分片。

3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。

4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的 扩展性。

 特点:

1.无需要跨文档或跨表的事务及复杂的join查询支持

2.敏捷迭代的业务,需求变动频繁,数据模型无法确定

3.存储的数据格式灵活,不固定,或属于半结构化数据

4.业务并发访问量大

5.TB级以上的海量数据存储,且数据量不断增加

6.要求存储的数据持久化、不丢失

7.需要99.999%的数据高可用性

8.需要大量的地理位置查询、文本查询

缺点:

1. MongoDB 不支持事务

2. MongoDB 不能进行多表联查

Java链接MongoDB:

// 获取Mongo的链接对象
MongoClient mc = new MongoClient("localhost", 27017);

//关闭链接
mc.close();

Java对MongoDB增删改查:

查看库,查看集合:

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

// 获取库对象
MongoDatabase db = mc.getDatabase("myschool");
System.out.println(db);

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

// 获取库中的表的集合
MongoIterable<String> listcollnames = db.listCollectionNames();
		
// 表的迭代器对象
MongoCursor<String> iterator = listcollnames.iterator();
		
while(iterator.hasNext()) {
    System.out.println(iterator.next()); 
}

添加数据:

1.插入一条数据:

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();
	}

2.插入多条数据;

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());
		
		
		Document doc2 = new Document();
		doc2.put("sid", 2);
		doc2.put("sname", "李四");
		doc2.put("birthday", new Date());
		doc2.put("ssex", "女");
		doc2.put("classid", 200);
		
		Document doc3 = new Document();
		doc3.put("sid", 3);
		doc3.put("sname", "王五");
		doc3.put("birthday", new Date());
		doc3.put("ssex", "男");
		doc3.put("classid", 300);
		
		List<Document> dlist = new ArrayList<Document>();
		dlist.add(doc);
		dlist.add(doc2);
		dlist.add(doc3);
		
		
		// 插入一条数据
//		table.insertOne(doc);
		
		table.insertMany(dlist);

		// 释放资源
		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 deleteOne = table.deleteOne(eq);
		DeleteResult deleteMany = table.deleteMany(eq);
		System.out.println(deleteMany.getDeletedCount());

		if(deleteMany.getDeletedCount() > 0) {
			System.out.println("删除成功");
		}else {
			System.out.println("删除失败");
		}
		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");
		
		// 条件对象   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");
		
//		Bson bson = Filters.regex("sname", "帅");
		
		Document document = new Document("classid",-1);
		
//		FindIterable<Document> find = table.find(bson);
		FindIterable<Document> find = table.find().sort(document);
		
		//MongoCursor<Document> iterator = find.iterator();
		
		for(Document doc : find) {
			System.out.println(doc);
		}

		mc.close();
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值