Mongo3.4.7与java1.8结合测试代码
2017-08-27 10:17
295 查看
1.下载mongo-java-driver-3.5.0.jar驱动并引入测试项目中。
2.代码如下:
2.代码如下:
package com.zzw.mongodb; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.LinkedList; import java.util.List; import org.bson.Document; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MapReduceCommand; import com.mongodb.MapReduceOutput; import com.mongodb.Mongo; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.AggregateIterable; import com.mongodb.client.DistinctIterable; import com.mongodb.client.FindIterable; import com.mongodb.client.MapReduceIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //插入 //insert(); //查询 query(); //更新 //update(); //删除 //delete(); } //有密码连接 public static MongoDatabase connect1(){ //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址 //ServerAddress()两个参数分别为 服务器地址 和 端口 ServerAddress serverAddress = new ServerAddress("localhost",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //参数: 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); //参数:Collections名称 MongoDatabase db = mongoClient.getDatabase("databaseName"); return db; } //无密码连接 public static MongoDatabase connect(){ //连接到mongo数据库 MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); //获取某一数据库 MongoDatabase db = mongoClient.getDatabase("test"); return db; } //插入 public static void insert(){ //连接到数据库 MongoDatabase db = connect(); //获取某一集合 MongoCollection<Document> collection = db.getCollection("user"); //时间格式 SimpleDateFormat s=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal=Calendar.getInstance(); //插入单个文档 Document doc = new Document(); doc.put("name", "zhangsan"); doc.put("age", 5); doc.put("sex", "男"); doc.put("time", s.format(cal.getTime())); collection.insertOne(doc); //插入多个文档 List<Document> docs = new LinkedList<Document>(); for(int i=0; i<25; i++){ Document doc1 = new Document(); doc1.put("name", "zhangsan"+(i+1)); doc1.put("age", 6+i); if(i % 2 == 0){ doc1.put("sex", "男"); } else{ doc1.put("sex", "女"); } doc1.put("time", s.format(cal.getTime())); docs.add(doc1); } collection.insertMany(docs); System.out.println("插入成功"); } //更新 public static void update(){ //连接到数据库 MongoDatabase db = connect(); //获取某一集合 MongoCollection<Document> collection = db.getCollection("user"); //更新全部。更新单个使用collection.updateOne(arg0, arg1)方法 collection.updateMany(Filters.gt("age",4),new Document("$set",new Document("time","2017/08/24 19:51:48"))); //检索查看结果 FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while(mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } System.out.println("更新成功"); } //删除 public static void delete(){ //连接到数据库 MongoDatabase db = connect(); //获取某一集合 MongoCollection<Document> collection = db.getCollection("user"); //删除符合条件的第一个文档 collection.deleteOne(Filters.gt("age", 4)); //删除所有符合条件的文档 collection.deleteMany (Filters.gt("age", 4)); System.out.println("删除成功"); } //查询 public static void query(){ //连接到mongo数据库 MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); //获取某一数据库 MongoDatabase db = mongoClient.getDatabase("test"); //获取某一集合 MongoCollection<Document> collection = db.getCollection("user"); //输出集合内所有元素 FindIterable<Document> documents = collection.find(); for (Document document : documents) { System.out.println(document); } //count()函数可以加 条件,参数形式可以是document或Filters long cnt=collection.count(); System.out.println("共有"+cnt+"条记录"); //查找所有name = zhangsan的document //Document query1 = new Document("name", "zhangsan"); //FindIterable<Document> documents1 = collection.find(query1); //使用filter查询 :eq ne lt gt lte gte and or in FindIterable<Document> documents1 = collection.find(Filters.eq("name", "zhangsan")); for (Document d : documents1) { System.out.println(d.toJson()); } //and 查询 //Document query2 = new Document("age", new Document("$lt", 25)).append("name", "zhangsan"); //FindIterable<Document> documents2 = collection.find(query2); FindIterable<Document> documents2 = collection.find(Filters.and(Filters.eq("name", "zhangsan"),Filters.lt("age", 25))); for (Document d : documents2) { System.out.println(d.toJson()); } //or 查询 //Document query3 = new Document("$or", Arrays.asList(new Document("name", "zhangsan"), new Document("name", "zhangsan1"))); //FindIterable<Document> documents3 = collection.find(query3); FindIterable<Document> documents3 = collection.find(Filters.or(Filters.eq("name", "zhangsan"),Filters.lt("name", "zhangsan1"))); for (Document d : documents3) { System.out.println(d.toJson()); } //between and 查询 Document query4 = new Document("age", new Document("$lt", 23).append("$gt", 20)); FindIterable<Document> documents4 = collection.find(query4); for (Document d : documents4) { System.out.println(d.toJson()); } FindIterable<Document> documents5 = collection.find(Filters.in("age", Arrays.asList(16,18,20))); for (Document d : documents5) { System.out.println(d.toJson()); } //按name升序,name相同的按age降序 FindIterable<Document> documents6 = collection.find().sort(Sorts.orderBy(Sorts.ascending("name"), Sorts.descending("age"))); for (Document d : documents6) { System.out.println(d.toJson()); } //skip()跳过,limit()限制,常用于分页显示。跳过前5条(0-4),返回(5-9)共5条。 FindIterable<Document> documents7 = collection.find().sort(Sorts.descending("age")).skip(5).limit(5); for (Document d : documents7) { System.out.println(d.toJson()); } System.out.println("ssss"); //distinct:去重 DistinctIterable<String> name = collection.distinct("name", String.class); MongoCursor<Integer> c = collection.distinct("age",Integer.class).iterator(); for (String s : name) { System.out.println(s); } //沒有条件 AggregateIterable<Document> aggregate = collection.aggregate(Arrays.asList( new Document("$project", new Document("name", 1).append("_id", 0).append("age", 1).append("sex", 1).append("time", 1)) ,new Document("$group", new Document("_id", "$time").append("avg", new Document("$avg", "$age")).append("first", new Document("$first", "$name"))) )); for (Document document : aggregate) { System.out.println(document.toJson()); } //加入条件 System.out.println("加入条件后聚合:"); AggregateIterable<Document> aggregate1 = collection.aggregate(Arrays.asList( new Document("$project", new Document("name", 1).append("_id", 0).append("age", 1).append("sex", 1).append("time", 1)) ,new Document("$match", new Document("age",new Document("$lt", 20).append("$gt", 7))) ,new Document("$group", new Document("_id", "$time").append("avg", new Document("$avg", "$age")).append("first", new Document("$first", "$name"))) )); for (Document document : aggregate1) { System.out.println(document.toJson()); } //map reduce String map = "function() { "+ "var category; " + "if ( this.age >= 18 ) "+ "category = '青年'; " + "else " + "category = '少年'; "+ "emit(category, {name: this.name});}"; String reduce = "function(key, values) { " + "var sum = 0; " + "values.forEach(function(doc) { " + "sum += 1; "+ "}); " + "return {count: sum};} "; MapReduceIterable<Document> mr=collection.mapReduce(map, reduce); for (Document o : mr) { System.out.println(o.toJson()); } } }
相关文章推荐
- 在Jmeter中使用自定义编写的Java测试代码
- 白盒测试 [代码规范][Java] 二
- JAVA 测试程序代码运行时间
- Java阶段性测试--第二三大题参考代码
- 将图片转换为base64字符串Java代码(未测试)
- 发送http请求(多用途测试,这里用以测试cookie) ,java代码测试例子
- 不一样的Hello Wold 测试你的Java基础 顺便说下此代码执行原理
- java之crc16测试代码
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- java并发测试代码
- 大搬家 (2016"百度之星" - 测试赛(热身,陈题))--Java代码
- Java 7:最新特性、代码示例及性能测试
- 20.fastDFS集群java代码测试
- java代码,使用sql语句操作mongo数据库
- Java连接SQL 数据库测试代码
- 使用 Jtest:一款优秀的 Java 代码优化和测试工具
- 总结redis第二部分(redis常用命令、高级命令特性以及与java代码的结合)
- jdbc结合sqlserver的javaWeb工程的分页查询共通操作代码
- Java实现分页展示,包括前后台java实现以及测试代码