一.java连接MongoDB
1. 导入MongoDB驱动包:
2.获取连接对象:
MongoClient mc = new MongoClient("localhost", 27017);
这里的 "localhost" 表示连接的服务器地址,27017 为端口号。
3.关闭连接:
mc.close();
二.查看库,查看集合
1. 查看链接的MongoDB中的所有的库
MongoIterable<String> listDatabaseNames = mc.listDatabaseNames();
MongoCursor<String> iterator = listDatabaseNames.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
2. 使用库查看库中的集合
MongoDatabase database = mc.getDatabase("myschool");
MongoIterable<String> listCollectionNames = database.listCollectionNames();
for(String s:listCollectionNames) {
System.out.println(s);
}
若指定的数据库不存在,mongoDB将会在第一次插入文档时创建数据库。
三.添加数据
1. 插入一条数据:
(1)
//获取连接对象
MongoClient mc=new MongoClient("localhost",27017);
//库对象
MongoDatabase database = mc.getDatabase("myschool");
//集合对象
MongoCollection<Document> collection = database.getCollection("student");
//新增
Document document1 = new Document();
document1.put("name","张三" );
document1.put("birthday",new Date() );
document1.put("sex","男" );
document1.put("age",16 );
//增添一条数据
collection.insertOne(document1);
mc.close();
(2)
导入gson的jar包:
创建student类对象
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
// 连接对象
MongoClient mc = new MongoClient("localhost", 27017);
// 库对象
MongoDatabase db = mc.getDatabase("myschool");
// 集合对象
MongoCollection<Document> collection = db.getCollection("student");
Student s = new Student();
s.setBirthday(new Date());
s.setClassid(100);
s.setSid(1);
s.setSname("张三三");
s.setSsex("男");
//将数据转换成json格式
String json = gson.toJson(s);
collection.insertOne(Document.parse(json));
mc.close();
2. 插入多条数据:
//获取连接对象
MongoClient mc=new MongoClient("localhost",27017);
//库对象
MongoDatabase database = mc.getDatabase("myschool");
//集合对象
MongoCollection<Document> collection = database.getCollection("student");
//新增
Document document1 = new Document();
document1.put("name","张三" );
document1.put("birthday",new Date() );
document1.put("sex","男" );
document1.put("age",16 );
Document document2 = new Document();
document2.put("name","张三" );
document2.put("birthday",new Date() );
document2.put("sex","男" );
document2.put("age",16 );
ArrayList<Document> listdoc = new ArrayList<Document>();
listdoc.add(document1);
listdoc.add(document2);
//添加多条数据
collection.insertMany(listdoc);
mc.close();
四.删除数据
//第一种删除
//DeleteResult deleteOne = collection.deleteOne(new Document("name","张三"));
//DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
//第二种删除
//Bson gt = Filters.gt("age", 30);
Bson exists = Filters.exists("name", false);
//DeleteResult deleteMany = collection.deleteMany(gt);
DeleteResult deleteMany = collection.deleteMany(exists);
System.out.println(deleteMany);
Filters :该过滤器类为所有的MongoDB的查询操作静态工厂方法。每个方法返回BSON类型,又可以传递给期望一个查询过滤器的任何方法的一个实例。
eq:匹配等于指定值的值。 gt:匹配大于指定值的值。 gte:匹配大于或等于指定值的值。 lt:匹配小于规定值的值。 lte:匹配是小于或等于规定值的值。 ne:匹配不等于指定值的所有值。 in:匹配任何在数组中指定的值。 nin:没有匹配数组中的规定值
五.修改数据
// Bson eq = Filters.eq("name", "张三");
//修改一条数据
// UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",22)));
//
// System.out.println(updateOne);
//修改多条数据
// UpdateResult updateMany = collection.updateMany(eq, new Document("$set",new Document("age",22)));
//
// System.out.println(updateMany);
//修改里面的添加
// Bson eq = Filters.eq("name", "小七");
// UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",22)),new UpdateOptions().upsert(true));
// System.out.println(updateOne);
//多条件
Bson gte = Filters.gte("age", 20);
Bson lte = Filters.lte("age", 30);
Bson and = Filters.and(gte,lte);
UpdateResult updateMany = collection.updateMany(and, new
Document("$set",new Document("sex","保密")));
//累加
UpdateResult updateMany = collection.updateMany(and, new Document("$inc",new Document("age",10)));
System.out.println(updateMany);
六.查询数据
// 添加条件
//使用正则表达式进行模糊查询
Bson eq = Filters.regex("name", "张");
//1升序 -1降序
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);
}