目录
前言
本文主要内容是java操作mongodb增删改查的基本操作
一、连接mongodb
1.安装驱动包
http://mongodb.github.io/mongo-java-driver/
2.连接数据库
将我们的mgngodb的jar包导入到我们的项目中,就可以使用java对mongodb进行操作。
二、操作mongodb
1.创建javabean
package com.com.bean;
public class Student {
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
2.新增
package com.db.lx;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class adddemo {
public static void main(String[] args) {
//获取对象
MongoClient mongoClient = new MongoClient("localhost",27017);
//建库
MongoDatabase database = mongoClient.getDatabase("myschool");
//建表
MongoCollection<Document> collection = database.getCollection("student");
//创建文档
Document document = new Document();
document.append("name", "张三");
document.append("age", 18);
Document document2 = new Document();
document2.append("name", "李四");
document2.append("age", 19);
Document document3 = new Document();
document3.append("name", "王五");
document3.append("age", 20);
//添加一条数据
//collection.insertOne(document);
List<Document> doclist = new ArrayList<Document>();
doclist.add(document);
doclist.add(document2);
doclist.add(document3);
//添加多条数据
collection.insertMany(doclist);
//释放资源
mongoClient.close();
}
}
注意:这里的mongodb中的建立集合,如果库里面没有student这个集合,那么mongodb就会自动帮我们创建这个集合,但是集合创建完毕,里面是没有数据的,所以我们在mongodb里是看不到我们这个student的学生集合。
其中insertOne()方法,是添加一条数据,而insertMany()是添加多条数据。
3.删除
package com.db.lx;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
public class deldemo {
public static void main(String[] args) {
//获取连接
MongoClient mongoClient = new MongoClient("localhost",27017);
//建库
MongoDatabase database = mongoClient.getDatabase("myschool");
//建表
MongoCollection<Document> collection = database.getCollection("student");
Document document = new Document();
document.append("name", "张三");
//mongo会删除所有符合条件的数据
//java操作的mongo删除遇到的第一个
DeleteResult deleteOne = collection.deleteOne(document);
//删除所有符合条件的数据
//DeleteResult deleteMany = collection.deleteMany(document);
//释放资源
mongoClient.close();
}
}
其中:deleteOne()方法是删除遇到符合条件的第一条数据,而deleteMany()方法是删除所有符合条件的数据。
4.修改
package com.db.lx;
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.model.UpdateOptions;
import com.mongodb.client.result.UpdateResult;
public class updatedemo {
public static void main(String[] args) {
//获取对象
MongoClient mongoClient = new MongoClient("localhost",27017);
//建库
MongoDatabase database = mongoClient.getDatabase("myschool");
//建表
MongoCollection<Document> collection = database.getCollection("student");
Bson eq = Filters.eq("name", "李四");
Document document = new Document();
document.append("$set", new Document("age",9));
Bson and = Filters.and(Filters.gte("age", 20),Filters.lte("age", 30));
//修改一条数据
//UpdateResult updateOne = collection.updateOne(eq, document);
//修改多条数据
UpdateResult updateMany = collection.updateMany(and, new Document("$inc",new Document("age",100)));
//多条件的修改
//UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age", 22)),new UpdateOptions().upsert(true));
mongoClient.close();
}
}
其中updateOne()方法修改一条数据,updateMany()方法是修改多条符合条件的数据。
其中修改的语法:db.sutdent.update({key:value},{$set:{key:value}}),我们需要特别注意修改的语法。
5.查询
package com.db.lx;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.com.bean.Student;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
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 select {
public static void main(String[] args) {
//获取对象
MongoClient mongoClient = new MongoClient("localhost",27017);
//建库
MongoDatabase database = mongoClient.getDatabase("myschool");
//建表
MongoCollection<Document> collection = database.getCollection("student");
//查找
FindIterable<Document> find = collection.find();
//cursor 游标 指针 引用
MongoCursor<Document> iterator = find.iterator();
//全查
List<Student> blist = new ArrayList<Student>();
//gson格式
Gson gson = new GsonBuilder().create();
while(iterator.hasNext()) {
Document next = iterator.next();
//文档对象
String json = next.toJson();
Student fromJson = gson.fromJson(json, Student.class);
blist.add(fromJson);
}
// //ORM
// while(iterator.hasNext()) {
//
// Document next = iterator.next();
//
// Student s = new Student();
//
// s.setName(next.getString("name"));
// s.setAge(next.getInteger("age"));
// blist.add(s);
// }
for(Student ss:blist) {
System.out.println(ss);
}
mongoClient.close();
}
}
其中:find()方法全查数据,首先得到的Document集合对象的find,find.iterator()方法得到Document迭代器对象iterator,我们取遍历迭代器对象时,new 一个gson格式,用我们得到的迭代器对象iterator去调用next()方法获得Document对象:next,next的toJson()方法将Document对象转换为Json,将我们的Json和javabean对象student.class反射的方式传入gson.fromJson()方法中,将fromJson添加到blist学生集合中,然后在最下面遍历学生集合就可以在控制台得到我们从mongodb中查询到的数据。
我们用ORM也是可以查询到相同结果的。
好了,以上就是本次的全部内容。
结尾
java操作mongodb时,增删改这些操作都在java控制台上没有直接打印,所以我们在控制台上时看任何消息,如果需要在控制台看到消息,我们就需要在每次操作的时候都在控制台上打印提示信息。
本文主要讲述Java如何对mongodb的增删改查,到这里就结束了。