package com.founder.mongo2bean; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.bson.Document; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mongodb.BasicDBObject; import com.mongodb.Block; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.BulkWriteOptions; import com.mongodb.client.model.DeleteOneModel; import com.mongodb.client.model.Filters; import com.mongodb.client.model.InsertOneModel; import com.mongodb.client.model.ReplaceOneModel; import com.mongodb.client.model.UpdateOneModel; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; public class Main { /** * mongo客户端 */ private MongoClient mongoClient =null; /** * 数据库 */ private MongoDatabase database = null; /** * 集合 */ private MongoCollection<Document> collection = null; @Before public void init(){ //获取连接 mongoClient = new MongoClient("localhost",27017); //获取数据库 database = mongoClient.getDatabase("test"); //进入某个文档集(大小写敏感) collection = database.getCollection("Doc"); } //单条数据插入测试 @Test public void insertOneTest(){ Document doc =new Document("name","MongoDB") .append("type", "database").append("count", 1) .append("info", new Document("x",203).append("y", 102)); collection.insertOne(doc); } //多条数据插入测试 @Test public void insertManyTest(){ List<Document> docs = new ArrayList<Document>(); for(int i=0;i<100;i++){ Document doc =new Document("name","MongoDB"+i) .append("type", "database").append("count", 1) .append("i", i) .append("info", new Document("x",203).append("y", 102)); docs.add(doc); } collection.insertMany(docs); } /** * 删除数据 */ @Test public void deleteTest(){ //删除所有符合条件的数据 DeleteResult deleteResult =collection.deleteMany(Filters.gte("i", 50)); System.out.println(deleteResult.getDeletedCount()); //删除第一个符合条件的数据 //collection.deleteOne(Filters.eq("i",5)); } /** * 修改数据 */ // 修改时的参数: // $inc 对指定的元素加 // $mul 乘 // $rename 修改元素名称 // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改 // $set 修改制定元素的值 // $unset 移除特定的元素 // $min 如果原始数据更大则不修改,否则修改为指定的值 // $max 与$min相反 // $currentDate 修改为目前的时间 @Test public void updateTest(){ /* // //修改第一个符合条件的数据 // $set 为修改 collection.updateOne(Filters.eq("i", 10), new Document("$set", new Document("i", 110))); // // 获取全部文档,可以看到以前10的地方变成了110 for (Document cur : collection.find()) { System.out.println(cur.toJson()); } */ // 批量修改数据并且返回修改的结果,讲所有小于100的结果都加100 UpdateResult updateResult = collection.updateMany(Filters.lt("i", 100), new Document("$inc", new Document("i", 100))); // 显示发生变化的行数 System.out.println(updateResult.getModifiedCount()); // // 获取全部文档,可以看到除了刚才修改的110其他的全为了100 for (Document cur : collection.find()) { System.out.println(cur.toJson()); } } //数据读取 @Test public void QueryTest(){ //获取文档总量 //System.out.println("count:"+collection.count()); //查询集合里面第一个文档 //Document doc = collection.find().first(); //System.out.println("FirstDoc:"+doc.toJson()); //获取集合中所有文档 //游标 /*MongoCursor<Document> cursor = collection.find().iterator(); try{ while(cursor.hasNext()){ System.out.println(cursor.next().toJson()); } }finally{ cursor.close(); }*/ /*//获取全部文档的其他方法 for(Document cur:collection.find()){ System.out.println("Doc:"+cur.toJson()); }*/ /*Document doc1 =new Document("name","MongoDB21"); Document myDoc = collection.find(doc1).first(); */ /*Document myDoc = collection.find(Filters.eq("i", 5)).first(); System.out.println(myDoc.toJson()); */ //通过查询语句一次性获取多个数据 Block<Document> printBlock = new Block<Document>() { @Override public void apply(Document doc) { // TODO Auto-generated method stub System.out.println(doc.toJson()); } }; //gt("i","50") //collection.find(Filters.gt("i",10)).forEach(printBlock); //collection //对输出文档进性排序 -1为递减,1为递增 /*Document myDoc =collection.find(Filters.exists("i")) .sort(new BasicDBObject("i", -1)).first(); System.out.println(myDoc.toJson());*/ // 选择性输出结果中的元素,0为不显示,1为显示 (两者为互斥关系,不能同时使用) BasicDBObject exclude = new BasicDBObject(); exclude.append("_id", 0); exclude.append("count", 0); //exclude.append("name", 1); //exclude.append("info", 1); Document myDoc = collection.find().projection(exclude).first(); System.out.println(myDoc.toJson()); } @After public void destory() { if(mongoClient!=null){ mongoClient.close(); } } }