聚合或其他 set 操作消除了 null 值_尚学堂105天。java程序中的mongoDB操作

9a33fde2ba2f80845a738f66ba50fff3.png

学习主题:MongoDb3

1. 添加文档

2. 更新文档

3. 查询文档

4. 运算符的使用

5. 日期操作

6. 聚合操作

7. 分页操作

完成对应代码 反复练习 直到熟 /** * 带认证和连接池的mongoDB工具类 */public class MongoDBAuthPoolUtil {//连接对象private static MongoClient client=null;static {if(client==null){//mongoDB的地址和端口ServerAddress address=new ServerAddress("192.168.179.110",27017);//创建凭证MongoCredential credential=MongoCredential.createCredential("itsxt","develop","itsxtpwd".toCharArray()); MongoClientOptions.Builder builder=new MongoClientOptions.Builder(); builder.connectionsPerHost(10);//每个地址的最大连接数builder.connectTimeout(5000);//连接超时时间builder.socketTimeout(5000);//设置读写操作的超时时间client=new MongoClient(address,credential,builder.build()); } }//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName); }//获得集合public static MongoCollection getCollection(String dbName, String colName){return getDatabase(dbName).getCollection(colName); }}

package com.bjsxt;import com.mongodb.MongoClient;import com.mongodb.client.*;import com.mongodb.client.model.Filters;import org.bson.BsonDocument;import org.bson.Document;import org.bson.conversions.Bson;import org.bson.types.ObjectId;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.List;import java.util.regex.Pattern;public class MongoDemo1 {public static void main(String[] args) {

//测试分页// findDocumentPage(5);findDocumentPage(3,2,"5dc0d8ff2640d0be81fb2e92"); }/** * 添加文档 */@Testpublic void saveOne(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); Document doc=new Document(); doc.append("userName","lisi").append("userAge",34).append("userDesc","Very Good").append("userLike", Arrays.asList(new String[]{"Music","Sport"})); collection.insertOne(doc); }/** * 添加多个文档 */@Testpublic void saveMany(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); List<Document> docList=new ArrayList<>();for(int i=10;i>5;--i){ Document doc=new Document(); doc.append("userName","lisi"+i); doc.append("userAge",34+i); doc.append("userDesc","Very Good"+i); doc.append("userLike",Arrays.asList(new String[]{"Music","Sport"})); docList.add(doc); } collection.insertMany(docList); }/** * 更新单个文档单个键 */@Testpublic void updateSingleDocumentSingleKey(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateOne(Filters.eq("userName","lisi"),new Document("$set",new Document("userAge",20))); }/** * 更新单个文档多个键 */@Testpublic void updateSingleDocumentManyKey(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateOne(Filters.eq("userName","lisi7"),new Document("$set",new Document("userAge",60).append("userDesc","Very Good"))); }/** * 更新多个文档中的单个键 */@Testpublic void updateManyDocumentSingleKey(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateMany(Filters.ne("userName",null),new Document("$set",new Document("userAge",20))); }/** * 更新多个文档中的多个键 */@Testpublic void updateManyDocumentManyKey(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateMany(Filters.ne("userName",null),new Document("$set",new Document("userAge",36).append("userDesc","OKOK"))); }/** * 更新文档中的数组 * 数组中添加一个元素 */@Testpublic void updateSingleDocumentArray(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateOne(Filters.eq("userName","lisi"),new Document("$push",new Document("userLike","Art"))); }/** * 更新文档中的数组 * 删除数组中的单个元素 */@Testpublic void updateManyDocumentArray(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateMany(Filters.or(new Document("userName","lisi10"),new Document("userName","lisi9")),new Document("$pop",new Document("userLike",1))); }/** * 更新文档中的数组 * 删除数组中的多个元素 */@Testpublic void updateManyDocumentManyArray(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("test"); collection.updateMany(Filters.or(new Document("userName","lisi")),new Document("$pullAll",new Document("userLike",Arrays.asList(new String[]{"Sport","Art"})))); }/** * 查询所有文档 */@Testpublic void findDocument(){ MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection=database.getCollection("dev"); FindIterable<Document> ite = collection.find(new Document("size",new Document("$gt",100))); MongoCursor<Document> cursor=ite.iterator();while (cursor.hasNext()){ Document docu=cursor.next(); System.out.println(docu); System.out.println(docu.get("userName")+"t"+docu.get("userAge")+"t"+docu.get("userDesc")+"t"+docu.get("userLike")); }// for(MongoCursor<Document> i=ite.iterator();i.hasNext();){// System.out.println("a");// Document docu=cursor.next();// System.out.println(docu.get("userName")+"t"+docu.get("userAge")+"t"+docu.get("userDesc")+"t"+docu.get("userLike"));//// }}/** * 查询多个文档 * gt、type、in、nin */@Testpublic void findDocumentBy() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("test");// FindIterable<Document> ite = collection.find(Filters.eq("_id", new ObjectId("5dc0d3936ab9d70554ef2311")));// FindIterable<Document> ite = collection.find(Filters.gt("userAge", 19));// FindIterable<Document> ite = collection.find(Filters.type("userAge","number"));// FindIterable<Document> ite = collection.find(Filters.in("_id",new ObjectId("5dc0d7f75d14d67098842260"),new ObjectId("5dc0d7f75d14d67098842262")));// FindIterable<Document> ite = collection.find(Filters.in("userName","lisi","lisi10"));// FindIterable<Document> ite = collection.find(Filters.nin("userName","lisi","lisi10"));// FindIterable<Document> ite = collection.find(Filters.regex("userName", Pattern.compile("^l.*0$")));// FindIterable<Document> ite = collection.find(Filters.or(// Filters.regex("userName", Pattern.compile("^l.*0$")),// Filters.regex("userName", Pattern.compile("^l.*9$"))));// FindIterable<Document> ite = collection.find(Filters.and(// Filters.regex("userName", Pattern.compile("^l.*0$")),// new Document("userAge",20)));FindIterable<Document> ite = collection.find(Filters.or( Filters.and(new Document("userName","lisi"),new Document("userAge",20)),new Document("userDesc","Very Good") )); MongoCursor<Document> cursor = ite.iterator();while (cursor.hasNext()) { Document docu = cursor.next(); System.out.println(docu.get("userName") + "t" + docu.get("userAge") + "t" + docu.get("userDesc") + "t" + docu.get("userLike")); } }/** * 查询文档并排序 */@Testpublic void findDocumentSorting() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("test");// FindIterable<Document> iterable=collection.find().sort(new Document("userName",-1.6));FindIterable<Document> iterable=collection.find().sort(new Document("userName",1.5)); MongoCursor<Document> cursor=iterable.iterator();while(cursor.hasNext()){ Document docu=cursor.next(); System.out.println(docu.get("userName") + "t" + docu.get("userAge") + "t" + docu.get("userDesc") + "t" + docu.get("userLike")); } }/** * 日期 */@Testpublic void dateUtil() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("test"); Document docu=new Document(); docu.put("userName","zhangsan"); docu.append("userAge",25).put("userDesc","Very Bad"); docu.append("userLike",Arrays.asList(new String[]{"Game","Music"})); docu.append("userBirth",new Date()); collection.insertOne(docu); }/** * 插入指定日期 */@Testpublic void dateUtils() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("test"); Document docu=new Document(); docu.put("userName","wangwu"); docu.append("userAge",35).put("userDesc","Very Hot"); docu.append("userLike",Arrays.asList(new String[]{"Game","Music"})); Date date=DateUtil.stringToDate("yyyy-MM-dd HH:mm:ss","2019-12-26 10:12:23"); docu.append("userBirth",date); collection.insertOne(docu); }/** * 查询日期 */@Testpublic void findDate() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("test"); Date date = DateUtil.stringToDate("yyyy-MM-dd HH:mm:ss", "2018-1-1 12:12:12"); FindIterable<Document> iterable = collection.find(Filters.gt("userBirth",date));// FindIterable<Document> iterable = collection.find(Filters.ne("userBirth",null));MongoCursor<Document> cursor = iterable.iterator();while (cursor.hasNext()) { Document docu = cursor.next(); String temp=DateUtil.dateToString("yyyy-MM-dd HH:mm:ss",(Date)docu.get("userBirth")); System.out.println(docu.get("userName") + "t" + docu.get("userAge") + "t" + docu.get("userDesc") + "t" + docu.get("userLike") + "t" + temp); } }/** * 聚合操作 */@Testpublic void selectDocumentAggregate() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("dev"); Document sum=new Document("$sum",1); Document count=new Document("_id",null); count.put("count",sum); Document group=new Document("$group",count); List<Document> list=new ArrayList<>(); list.add(group); AggregateIterable<Document> iterable = collection.aggregate(list); MongoCursor<Document> cursor=iterable.iterator();while(cursor.hasNext()){ Document docu=cursor.next(); System.out.println(docu.get("count")); } }/** * 聚合操作 */@Testpublic void findDocumentAggregate() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("dev");// Document group=new Document(new Document("$group",new Document("_id",null).append("count",new Document("$sum",1))));// Document group=new Document(new Document("$group",new Document("_id","$title").append("count",new Document("$sum","$size"))));Document group=new Document("$group",new Document("_id",null).append("totalSize",new Document("$sum",1))); Document match=new Document("$match",Filters.gt("size",200)); List<Document> list=new ArrayList<>(); list.add(match); list.add(group); AggregateIterable<Document> iterable = collection.aggregate(list); MongoCursor<Document> cursor=iterable.iterator();while(cursor.hasNext()){ Document docu=cursor.next();// System.out.println(docu.get("_id")+"ttt"+docu.get("count"));System.out.println(docu.get("totalSize")); } }/** * 聚合投影操作 */@Testpublic void findDocumentAggregateProject() { MongoDatabase database = MongoDBAuthPoolUtil.getDatabase("develop"); MongoCollection collection = database.getCollection("dev"); Document unwind1=new Document(); unwind1.put("$unwind","$tags"); Document pro=new Document(); pro.put("_id",0); pro.put("tags","$tags"); pro.put("title","$title"); Document project1=new Document(); project1.put("$project",pro); Document project=new Document("$project",new Document("_id",0).append("tags","$tags").append("title","$title")); Document unwind=new Document("$unwind","$tags"); Document project2=new Document("$project",new Document("_id",0).append("title_tags",new Document("$concat",Arrays.asList(new String[]{"$title","-","$tags"})))); Document unwind2=new Document("$unwind","$tags"); Document match3=new Document("$match",Filters.ne("size",null)); Document project3=new Document("$project",new Document("_id",0).append("title",1).append("newSize",new Document("$add",Arrays.asList(new Object[]{"$size",1})))); Document match4=new Document("$match",Filters.ne("date",null)); Document project4=new Document("$project",new Document("自定义日期格式",new Document("$dateToString",new Document("format","%Y年%m月%d日 %H时%M分%S秒").append("date","$date")))); List<Document> list=new ArrayList<>(); list.add(match4); list.add(project4); AggregateIterable<Document> iterable = collection.aggregate(list); MongoCursor<Document> cursor=iterable.iterator();while(cursor.hasNext()){ Document docu=cursor.next();// System.out.println(docu.get("tags")+"t"+docu.get("title"));System.out.println(docu.get("自定义日期格式")); } }/** * 使用skip和limit分页查询 */public static void findDocumentPage(int pageIndex){int page=(pageIndex-1)*2; MongoCollection collection=MongoDBAuthPoolUtil.getCollection("develop","dev"); FindIterable<Document> iterable=collection.find().skip(page).limit(2); MongoCursor<Document> cursor=iterable.iterator();while (cursor.hasNext()){ Document docu = cursor.next(); System.out.println(docu.get("_id")+"t"+docu.get("title")+"t"+docu.get("description")+"t"+docu.get("tags")+"t"+docu.get("size")+"t"+docu.get("score")); } }/** * 用当前页最大id做为条件的分页查询 */public static void findDocumentPage(int pageIndex,int pageSize,String lastId){ MongoCollection collection=MongoDBAuthPoolUtil.getCollection("develop","dev"); Document condition=new Document(); FindIterable<Document> iterable=null;if(pageIndex==1){ iterable=collection.find().limit(pageSize); }else{if (lastId!=null) { Bson id = Filters.gt("_id", new ObjectId(lastId)); condition=new Document("_id",new Document("$gt",new ObjectId(lastId))); iterable=collection.find(condition).limit(pageSize); } } MongoCursor<Document> cursor=iterable.iterator();while (cursor.hasNext()){ Document docu = cursor.next(); System.out.println(docu); System.out.println(docu.get("_id")+"t"+docu.get("title")+"t"+docu.get("description")+"t"+docu.get("tags")+"t"+docu.get("size")+"t"+docu.get("score")); } }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值