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