这个是 mongodb-driver-3.4.2 是最新的 mongodb 的java支持 包
如果是手动导包 而不是用 maven 或者grandle构建的话 还需要导入两个jar包 bson-3.4.2.jar 和 mongodb-driver-core-3.4.2.jar
mongodb 是文档型的数据库 存入的结构类似json 它是叫作 bson 这个版本的对于数据的增删改查方法又有新的变化 都是在官方文档上可以找到的
上代码:
package com.mongodb.test;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.exists;
import java.lang.reflect.Field;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.bson.Document;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.google.gson.Gson;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Updates;
public class TestMongo2 {
private long startTime;
private MongoClient mongo = null;
private MongoCollection<Document> collection = null;
private String[] names = { "周杰伦", "周星驰", "大肥牛", "北京烤鸭", "辜*圆大帅比" };
private String[] names2 = { "方大同", "周李波", "天使", "美女", "超级大帅比" };
private Gson gson = new Gson();
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};
public static Map<String, Object> objectToMap(Object obj) throws Exception {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
}
@Before
public void begin() throws UnknownHostException {
System.out.println("===========start the game========");
startTime = System.currentTimeMillis();
mongo = new MongoClient("localhost", 27017);
// 连接名为gzydb的数据库,假如数据库不存在的话,mongodb会自动建立
MongoDatabase db = mongo.getDatabase("gzydb");
// 从Mongodb中获得名为bill的数据集合,如果该数据集合不存在,Mongodb会为其新建立
collection = db.getCollection("bill");
}
@Test
public void getCount() {
System.out.println("总数为:" + collection.count());
}
@Test
public void insertManyTest() {
System.out.println("开始插入");
ArrayList<Document> arrayList = new ArrayList<Document>();
// for (int i = 0; i < 100000000; i++) {
for (int i = 0; i < 5000; i++) {
String billParty = names[(int) (Math.random() * 5)];
String seller = names2[(int) (Math.random() * 5)];
Bill bill = new Bill(i + "123456", UUID.randomUUID().toString(), billParty, seller, "什么鬼", new Date());
Document doc = null;
try {
// doc=Document.parse(gson.toJson(bill));
doc = new Document(objectToMap(bill));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
arrayList.add(doc);
}
collection.insertMany(arrayList);
System.out.println("结束插入");
}
@Test
public void insertManyOneByOneTest() {
System.out.println("开始插入,咱们一条一条慢慢插");
for (int i = 0; i < 100000000; i++) {
// for (int i = 0; i < 5000; i++) {
String billParty = names[(int) (Math.random() * 5)];
String seller = names2[(int) (Math.random() * 5)];
Bill bill = new Bill(i + "123456", UUID.randomUUID().toString(), billParty, seller, "什么鬼", new Date());
Document doc = null;
try {
doc = new Document(objectToMap(bill));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
collection.insertOne(doc);
}
System.out.println("结束插入");
}
@Test
public void insertOneTest() {
String billParty = names[(int) (Math.random() * 5)];
String seller = names2[(int) (Math.random() * 5)];
Bill bill = new Bill("dd123456", UUID.randomUUID().toString(), billParty, seller, "什么鬼", new Date());
Document doc = null;
try {
doc = new Document(objectToMap(bill));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
collection.insertOne(doc);
}
@Test
public void updateOneTest() {
System.out.println("开始更新一条");
// 就修改一条
collection.updateOne(eq("ivoiceNumber", "dd123456"), Updates.set("financial", "修改了金融"));
System.out.println("结束更新");
}
@Test
// 查询的结果装进对象里
public void findTest() {
System.out.println("开始查询");
// collection.find().forEach(printBlock);
FindIterable<Document> doc = collection.find();
List<Bill> bl = new ArrayList<Bill>();
for (Document document : doc) {
bl.add(gson.fromJson(document.toJson(), Bill.class));
}
for (Bill bill : bl) {
System.out.println(gson.toJson(bill));
}
System.out.println("总数为" + collection.count());
}
@Test
public void findByTwoOptions() {
System.out.println("根据两个条件进行查询");
FindIterable<Document> find = collection
.find(and(eq("ivoiceNumber", "4999123456"), eq("ivoiceCode", "6b1601d1-f68e-46c0-af92-3a1654c01b02")));
System.out.println(find.first());
}
@Test
public void findMany() {
System.out.println("根据一个条件进行查询");
FindIterable<Document> find = collection.find(eq("seller", "方大同"));
find.forEach(printBlock);
// System.out.println(collection.count(eq("seller","方大同")));
}
@Test
public void deleteOneTest() {
System.out.println("删除一条:");
collection.deleteOne(eq("ivoiceNumber", "dd123456"));
}
@Test
public void deleteAllTest() {
System.out.println("删除所有(只要存在指定字段):");
collection.deleteMany(exists("seller"));
}
@After
public void out() {
if (mongo != null) {
mongo.close();
}
System.out.println("耗时为:" + (System.currentTimeMillis() - startTime));
}
}
//对应的实体类:
package com.mongodb.test;
import java.util.Date;
import org.bson.Document;
public class Bill extends Document {
private String ivoiceNumber;
private String ivoiceCode;
private String billParty;// 开票方
private String seller;// 销售方
private String financial;
private Date billTime;
public String getIvoiceNumber() {
return ivoiceNumber;
}
public void setIvoiceNumber(String ivoiceNumber) {
this.ivoiceNumber = ivoiceNumber;
}
public String getIvoiceCode() {
return ivoiceCode;
}
public Bill() {
}
public Bill(String ivoiceNumber, String ivoiceCode, String billParty, String seller, String financial, Date date) {
super();
this.ivoiceNumber = ivoiceNumber;
this.ivoiceCode = ivoiceCode;
this.billParty = billParty;
this.seller = seller;
this.financial = financial;
this.billTime = date;
}
public void setIvoiceCode(String ivoiceCode) {
this.ivoiceCode = ivoiceCode;
}
public String getBillParty() {
return billParty;
}
public void setBillParty(String billParty) {
this.billParty = billParty;
}
public String getSeller() {
return seller;
}
public void setSeller(String seller) {
this.seller = seller;
}
public String getFinancial() {
return financial;
}
public void setFinancial(String financial) {
this.financial = financial;
}
public Date getBillTime() {
return billTime;
}
public void setBillTime(Date billTime) {
this.billTime = billTime;
}
}