目录
前言
MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数
据库当中功能最丰富,最像关系数据库的。
一、java链接数据库
- 导入MongoDB驱动包
- 获取链接对象
MongoClient mc = new MongoClient("localhost", 27017);
这里的 "localhost" 表示连接的服务器地址,27017 为端口号。可以省略 端口号 不写,系统将默认端口号为 27017。
- 关闭链接
mc.close();
二、查看库、查看集合
// 库对象
MongoDatabase db = mc.getDatabase("myschool");
// 集合对象
MongoCollection<Document> collection = db.getCollection("student");
FindIterable<Document> list = collection.find();
//遍历集合
for(Document d : list) {
Student s = DocUtil.DocToObj(d, Student.class);
System.out.println(s);
}
mc.close();
三、添加数据
1.添加一条数据
MongoClient mc = new MongoClient("localhost",27017);
//库对象
MongoDatabase db = mc.getDatabase("myschool");
//集合对象
MongoCollection<Document> collection = db.getCollection("student");
//新增
Document document=new Document();
document.put("name", "嘻嘻");
document.put("age", 20);
document.put("hobby", "画画");
document.put("birthday", new Date());
//添加一条数据
collection.insertOne(document);
mc.close();
2.添加多条数据
MongoClient mc = new MongoClient("localhost",27017);
//库对象
MongoDatabase db = mc.getDatabase("myschool");
//集合对象
MongoCollection<Document> collection = db.getCollection("student");
Document document=new Document();
document.put("name", "伤心");
document.put("age", 20);
document.put("hobby", "画画");
document.put("birthday", new Date());
Document document1=new Document();
document1.put("name", "开心");
document1.put("age", 20);
document1.put("hobby", "吃饭");
document1.put("birthday", new Date());
List<Document> list=new ArrayList<>();
list.add(document);
list.add(document1);
//添加多条数据
collection.insertMany(list);
mc.close();
四、删除数据
1.删除一条数据
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase db = mc.getDatabase("myschool");
MongoCollection<Document> collection = db.getCollection("student");
//删除一个
Bson eq = Filters.eq("name","张三三");
DeleteResult deleteOne = collection.deleteOne(eq);
mc.close();
2.删除多条数据
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase db = mc.getDatabase("myschool");
MongoCollection<Document> collection = db.getCollection("student");
//删除所有匹配到的
//删除没有年龄的学生 false为不存在 ,默认为true
Bson exists = Filters.exists("age", false);
DeleteResult deleteMany = collection.deleteMany(exists);
System.out.println(deleteMany);
mc.close();
五、修改数据
1.修改一条数据
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase db = mc.getDatabase("myschool");
MongoCollection<Document> collection = db.getCollection("student");
Bson eq = Filters.eq("name", "张三");
UpdateResult updateOne = collection.updateOne(eq,
new Document("$set",new Document("age",30)));
//如果没有匹配到,就新增进去,输出的时候有id信息
Bson eq1 = Filters.eq("name", "张三三");
UpdateResult updateOne = collection.updateOne(eq1,
new Document("$set",new Document("age",30)),
new UpdateOptions().upsert(true));
2.修改多条数据
UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",30)));
//修改所有匹配到的
System.out.println(updateMany);
Bson gt1 = Filters.gt("age", 20);
Bson gt2 = Filters.lt("age", 30);
Bson and = Filters.and(gt1,gt2);
UpdateResult updateMany =collection.updateMany(and,newDocument("$set",newDocument("sex","保密")));
System.out.println(updateMany);
mc.close();
六、查询数据
Gson gson = new GsonBuilder().create();
MongoClient mc=new MongoClient("localhost",27017);
MongoDatabase db = mc.getDatabase("myschool");
MongoCollection<Document> collection = db.getCollection("student");
FindIterable<Document> find = collection.find();
List<Student> list=new ArrayList<>();
for(Document doc:find) {
System.out.println(doc);
}
Iterator<Document> iterator = find.iterator();
while(iterator.hasNext()) {
Student s=new Student();
Document next = iterator.next();
String json = next.toJson();
s.setAge(age);
}
mc.close();
1.模糊查询
//模糊查询
Bson regex = Filters.regex("name", "李");
FindIterable<Document> find2 = collection.find(regex);
for(Document doc:find2) {
System.out.println(doc);
}
2.分页查询
//分页查询
FindIterable<Document> find = collection.find().skip(2).limit(2);
List<Student> list=new ArrayList<>();
for(Document doc:find) {
System.out.println(doc);
}
3.排序
//排序
Document document = new Document("age",-1);
FindIterable<Document> find1= collection.find().sort(document);
List<Student> list1=new ArrayList<>();
for(Document doc:find) {
System.out.println(doc);
}
七、过滤器
该过滤器类为所有的MongoDB的查询操作静态工厂方法。每个方法返回BSON类型,又可以传递给期
望一个查询过滤器的任何方法的一个实例。
eq: :匹配等于指定值的值。
gt: :匹配大于指定值的值。
gte: :匹配大于或等于指定值的值。
lt: :匹配小于规定值的值。
lte: :匹配是小于或等于规定值的值。
ne: :匹配不等于指定值的所有值。
in: :匹配任何在数组中指定的值。
nin: :没有匹配数组中的规定值。