当前位置:   article > 正文

java mongodb 批量删除_java 实现mongoDB 增加,删除,修改,查看,多条件查询,聚合查询,分组查询(史上最全)...

java根据id批量删除mongodb里的数据

importcom.mongodb.BasicDBObject;importcom.mongodb.MongoClient;import com.mongodb.client.*;importcom.mongodb.client.model.Aggregates;importcom.mongodb.client.model.Filters;importcom.mongodb.client.model.InsertOneModel;importcom.mongodb.client.model.UpdateOneModel;importorg.bson.Document;importorg.bson.conversions.Bson;importorg.junit.jupiter.api.AfterEach;importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;importjavax.print.Doc;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;importjava.util.regex.Pattern;

@SpringBootTestpublic classMongodJointTest {privateMongoClient mongod;privateMongoDatabase data;

@BeforeEachpublic voidmongoJoint() {

mongod= new MongoClient("localhost", 27017);

data= mongod.getDatabase("runoob");

}

@AfterEachpublic voidcloseMongo() {

mongod.close();

}//单条插入

@Testpublic voidinsertMongo() {

MongoCollection ab1 = data.getCollection("ab1");

Document c= newDocument();

c.append("title", "s标题qq");

c.append("encode", 22.0);

ab1.insertOne(c);

System.out.println("数据插入成功");

}//多条插入

@Testpublic voidinsertManyMongo() {

MongoCollection ab1 = data.getCollection("ab1");

Document c0= newDocument();

c0.append("title", "标题0");

c0.append("encode", 21.0);

Document c1= newDocument();

c1.append("title", "标题1");

c1.append("encode", 22.0);

Document c2= newDocument();

c2.append("title", "标题2");

c2.append("encode", 23.0);

List c =Arrays.asList(c0, c1, c2);

ab1.insertMany(c);

System.out.println("数据插入成功");

}//删除

@Testpublic voiddelMongod() {

MongoCollection ab1 = data.getCollection("ab1");

Document c= newDocument();

c.append("title", "a");

ab1.deleteOne(c);//两种写法//ab1.deleteOne(Filters.eq("title","b"));

}//修改信息

@Testpublic voidupMongod() {

MongoCollection ab1 = data.getCollection("ab1");

ab1.updateOne(Filters.eq("title", "标题"), new Document("$set", new Document("encode", 21.0)));

}//批量插入,修改,(也可删除)

@Testpublic voidsumMongod() {

MongoCollection ab1 = data.getCollection("ab1");

ab1.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("title", "p标题1")),new InsertOneModel<>(new Document("title", "p标题2")),new InsertOneModel<>(new Document("title", "p标题3")),new UpdateOneModel<>(new Document("title", "p标题1"), new Document("$set", new Document("title", "p批量修改标题")))

));

}//查询

@Testpublic voidsendMongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable documents = ab1.find().limit(3).skip(2);for(Document doc : documents) {

System.out.println(doc.get("_id") + " " + doc.get("title") + " " + doc.get("encode"));

}

}//排序

@Testpublic voidsendSortMongod() {

MongoCollection ab1 = data.getCollection("ab1");

Document c= newDocument();//c.append("encode",1);

c.append("encode", -1);

FindIterable documents =ab1.find().sort(c);for(Document doc : documents) {

System.out.println(doc.get("_id") + " " + doc.get("title") + " " + doc.get("encode"));

}

}//条件查询

@Testpublic voidconditionMongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable d = ab1.find(Filters.lt("encode", 20));//FindIterable d = ab1.find(Filters.lte("encode",20));//FindIterable d = ab1.find(Filters.gt("encode",20));//FindIterable d = ab1.find(Filters.gte("encode",20));//FindIterable d = ab1.find(Filters.ne("encode",20));

for(Document doc : d) {

System.out.println(doc.get("_id") + " " + doc.get("title") + " " + doc.get("encode"));

}

}//条件查询

@Testpublic voidconditionMongod1() {

MongoCollection ab1 = data.getCollection("ab1");

Bson where= Filters.and(Filters.gt("encode", 20), Filters.eq("title", "标题"));

FindIterable d =ab1.find(where);for(Document doc : d) {

System.out.println(doc.get("_id") + " " + doc.get("title") + " " + doc.get("encode"));

}

}//查询一张表中的数据条数

@Testpublic voidcountMongod() {

MongoCollection collection = data.getCollection("ab1");

FindIterable ab1 =collection.find();int i = 0;for(Document doc : ab1) {

i++;

}

System.out.println(i);

}//从第一条数据开是查询出前五条数据

@Testpublic voidfirst5MongodToTitle() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable skip = ab1.find().limit(5).skip(0);for(Document doc : skip) {

System.out.println(doc.get("title"));

}

}//查询等于18的数据

@Testpublic voidencodeEq18Mongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable encode = ab1.find(Filters.eq("encode", 18));for(Document doc : encode) {

System.out.println(doc.get("title"));

}

}//查询大于等于18的数据

@Testpublic voidencodeGte18Mongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable encode = ab1.find(Filters.gte("encode", 18));for(Document doc : encode) {

System.out.println(doc.get("title"));

}

}//查询18到22之间的数据

@Testpublic voidencodeGte18Between22Mongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable encode = ab1.find(Filters.and(Filters.gt("encode", 18), Filters.lt("encode", 22)));for(Document doc : encode) {

System.out.println(doc.get("title"));

}

}//根据标题查询价格

@Testpublic voidgetencodeTotitleMongod() {

MongoCollection ab1 = data.getCollection("ab1");

FindIterable documents = ab1.find(Filters.eq("title", "标题1"));for(Document document : documents) {

System.out.println(document.get("encode"));

}

}//模糊查询

@Testpublic voidLikeMongod() {

MongoCollection ab1 = data.getCollection("ab1");//固定查询//Pattern pattern = Pattern.compile("^标题0$", Pattern.CASE_INSENSITIVE);//包含查询//Pattern pattern = Pattern.compile("^.*标.*$", Pattern.CASE_INSENSITIVE);//左固定//Pattern pattern = Pattern.compile("^标题.*$", Pattern.CASE_INSENSITIVE);//右固定

Pattern pattern = Pattern.compile("^.*标题$", Pattern.CASE_INSENSITIVE);

BasicDBObject obj= newBasicDBObject();

obj.put("title", pattern);

FindIterable documents =ab1.find(obj);for(Document document : documents) {

System.out.println(document.get("encode"));

}

}//聚合查询

@Testpublic voidgroupMongod() {

MongoCollection collection = data.getCollection("ab1");//对encode的数量进行分组,并且统计出个数

Document doc = newDocument();

doc.append("_id", "$encode");

doc.append("count", new Document("$sum", 1));//查找encode字段中数量大于18的

Document matchDoc = newDocument();

matchDoc.put("_id", new Document("$gt", 18.0));

Document group= new Document("$group", doc);

Document match= new Document("$match", matchDoc);//根据encode字段进行降序排序

Document sort = new Document("$sort", new Document("_id", 1));//将筛选条件添加到文本集合中

List doclist = new ArrayList();

doclist.add(group);

doclist.add(match);

doclist.add(sort);//聚合查询并输出

AggregateIterable aggregate =collection.aggregate(doclist);

MongoCursor iterator =aggregate.iterator();while(iterator.hasNext()) {

Document next=iterator.next();double encode = next.getDouble("_id");int count = next.getInteger("count", 0);

System.out.println(encode+ " " +count);

}

}//在mongod控制台下执行下面三句命令

/*db.test2.insert({"jobtitle":"java开发工程师","jobnum":"001"},{"jobtitle":"数据库开发工程师","jobtitle":"002"})

db.test2.insert([{"jobtitle":"java工程师","jobnum":"001"},{"jobtitle":"数据库工程师","jobnum":"002"}])

db.test3.insert([{"depart":"开发1部","jobnum":"001"},{"depart":"开发2部","jobnum":"002"}])*/

//三表带筛选条件关联查询 关键字:lookup

@Testpublic voidlookupMongod() {

MongoCollection test1 = data.getCollection("test1");

List aggregateList = new ArrayList<>(1);

aggregateList.add(Aggregates.lookup("test2", "jobnum", "jobnum", "result"));

aggregateList.add(Aggregates.match(Filters.ne("result", new ArrayList(0))));

aggregateList.add(Aggregates.lookup("test3", "jobnum", "jobnum", "results"));

aggregateList.add(Aggregates.match(Filters.ne("results", new ArrayList(0))));

aggregateList.add(Aggregates.match(Filters.eq("jobnum", "002")));

AggregateIterable aggregateIterable =test1.aggregate(aggregateList);//对应得到的json结果参考下方

for(Document document : aggregateIterable) {

Object result= document.get("result");

String[] split= result.toString().split(",");

System.out.println(split[1].substring(split[1].indexOf("=") + 1));

Object results= document.get("results");

String[] splits= results.toString().split(",");

System.out.println(splits[1].substring(splits[1].indexOf("=") + 1));

}

}//{ "_id" : { "$oid" : "5eba18b5108d9caa7dba842a" },//"title" : "java开发手册",//"author" : "孤尽",//"jobnum" : "001",//"result" : [{//"_id" : { "$oid" : "5eba1aa2108d9caa7dba8430" },//"jobtitle" : "java工程师",//"jobnum" : "001"//}],//"results" : [{//"_id" : { "$oid" : "5eba3333108d9caa7dba8432" },//"depart" : "开发1部",//"jobnum" : "001"//}]//}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/735522
推荐阅读
相关标签
  

闽ICP备14008679号