目录
一、MongoDB介绍
2007年10月,MongoDB由10gen团队开发。2009年2月首度推出。基于分布式文件存储的数据库,由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据哭(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
二、MongoDB的特点
- 不需要跨文档或跨表的事务及复杂的join查询支持;
- 敏捷迭代的业务,需求变动频繁,数量模型无法确定;
- 存储的数据格式灵活,不固定或属于半结构化数据;
- 业务并发访问量大;
- TB级以上的海量数据存储,且数据量不断增加;
- 需求存储的数据持久化、不丢失;
- 99.999%的数据高可用性;
- 需要大量的地理位置查询、文本查询。
三、MongoDB的优点
- MongoDB提供了一个面向文档存储,操作起来比较简单和容易;
- 如果负载增加,它可以在分布在计算机网络中的其他节点,就是所谓的分片;
- MongoDB支持编程语言:RUBY,Python,Java,C++,PHP,C#等多种语言;
- 可以通过本地或网络创建数据镜像,这使得MongoDB有更强的扩展性。
四、MongoDB的缺点
- MongoDB不支持事务
- MongoDB不能进行多表联查
五、MongoDB解决了MySQL的“三高”问题
- 对数据库高并发写入需求
- 对海量数据高效率存储访问需求
- 对数据库高扩展和高可用的需求
六、MongoDB和MySQL的对比
MySQL | MongoDB |
数据库 | 数据库 |
表 | Collection(集合) |
行 | Document(文档) |
七、建立连接
在使用Java操作MongoDB时是需要导包的。
MongoClient mc = new MongoClient("localhost",27017);
System.out.println(mc);
mc.close();
但此种方式只适合没有密码的MongoDB的连接。
八、查看数据库
public class ConnTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoIterable<String> listDatabaseNames = mc.listDatabaseNames();
MongoCursor<String> iterator = listDatabaseNames.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
mc.close();
}
}
九、查看集合
public class ConnTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
System.out.println(database);
MongoIterable<String> listCollectionNames = database.listCollectionNames();
// MongoCollection<Document> collection = database.getCollection("student");
for(String s : listCollectionNames) {
System.out.println(s);
}
mc.close();
}
}
注意:MongoCollection<Document> collection = database.getCollection("student");
没有集合时会创建集合。
例:
public class ConnTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("teacher");
System.out.println(collection);
mc.close();
}
}
十、新增
package com.my.connection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class AddTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
//新增一条数据
// Document document = new Document();
//
// document.put("name", "卓文君");
// document.put("age", 20);
// document.put("birthday", new Date());
// document.put("sex", "女");
//
// collection.insertOne(document);
//新增多条数据
Document d1 = new Document();
d1.put("name", "司马相如");
d1.put("age", 20);
d1.put("birthday", new Date());
d1.put("sex", "男");
Document d2 = new Document();
d2.put("name", "百里守约");
d2.put("age", 20);
d2.put("birthday", new Date());
d2.put("sex", "男");
Document d3 = new Document();
d3.put("name", "花木兰");
d3.put("age", 20);
d3.put("birthday", new Date());
d3.put("sex", "女");
List<Document> list = new ArrayList<Document>();
list.add(d1);
list.add(d2);
list.add(d3);
collection.insertMany(list);
mc.close();
}
}
十一、删除
package com.my.connection;
import java.nio.file.DirectoryStream.Filter;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
public class DeleteTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
Bson exists = Filters.exists("age",false);
// DeleteResult deleteOne = collection.deleteOne(new Document("name","司马相如"));
// System.out.println(deleteOne);
//
// DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
DeleteResult deleteMany = collection.deleteMany(exists);
System.out.println(deleteMany);
mc.close();
}
}
十二、修改
package com.my.connection;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.UpdateResult;
public class ModifyTest {
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myschool");
MongoCollection<Document> collection = database.getCollection("student");
Bson eq = Filters.eq("name","司马相如");
// UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",30)));
// System.out.println(updateOne);
// UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",30)));
// Bson and = Filters.and(Filters.gte("age", 15),Filters.lte("age", 20));
// UpdateResult updateMany = collection.updateMany(and, new Document("$set",new Document("sex","保密")));
// System.out.println(updateMany);
UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",30)));
System.out.println(updateMany);
mc.close();
}
}
十三、查询
package com.my.connection;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class FindTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
MongoClient mc = new MongoClient("localhost",27017);
MongoDatabase database = mc.getDatabase("myshool");
MongoCollection<Document> collection = database.getCollection("student");
FindIterable<Document> find = collection.find(new Document("name","苏小小"));
MongoCursor<Document> iterator = find.iterator();
List<Student> list = new ArrayList<Student>();
while(iterator.hasNext()) {
Document next = iterator.next();
Student s = new Student();
s.setAge(next.getInteger("age"));
s.setName(next.getString("name"));
s.setSex(next.getString("sex"));
list.add(s);
}
list.forEach(System.out::println);
mc.close();
}