Java操作MongoDB模糊查询和分页查询
本文实例为大家分享了Java操作MongoDB模糊查询和分页查询,供大家参考,具体内容如下
模糊查询条件:
1、完全匹配
Patternpattern=Pattern.compile("^name$",Pattern.CASE_INSENSITIVE);
2、右匹配
Patternpattern=Pattern.compile("^.*name$",Pattern.CASE_INSENSITIVE);
3、左匹配
Patternpattern=Pattern.compile("^name.*$",Pattern.CASE_INSENSITIVE);
4、模糊匹配
Patternpattern=Pattern.compile("^.*name8.*$",Pattern.CASE_INSENSITIVE);
记录总数查询:
count(),返回查询总数。
查询记录排序:
BasicDBObjectsort=newBasicDBObject();
sort.put("name",1);
1、表示正序;-1.表示倒序
分页查询:
skip(),跳过多少条记录
limit(),返回多少条记录
代码实例:
packagecom.what21.mongodb.demo; importjava.util.ArrayList; importjava.util.List; importjava.util.Set; importjava.util.regex.Pattern; importcom.mongodb.BasicDBObject; importcom.mongodb.DB; importcom.mongodb.DBCollection; importcom.mongodb.DBCursor; importcom.mongodb.DBObject; importcom.mongodb.MongoClient; importcom.mongodb.MongoClientOptions; importcom.mongodb.MongoCredential; importcom.mongodb.ServerAddress; publicclassOperateDemo2{ /** *@return *@throwsException */ publicstaticMongoClientgetMongoClient()throwsException{ try{ //===================================================// List<ServerAddress>serverList=newArrayList<ServerAddress>(); serverList.add(newServerAddress("192.168.18.85",27017)); //===================================================// List<MongoCredential>mcList=newArrayList<MongoCredential>(); Stringusername="root"; Stringdatabase="demo"; char[]password="root123".toCharArray(); mcList.add(MongoCredential.createCredential(username,database,password)); //===================================================// MongoClientOptions.Builderbuilder=MongoClientOptions.builder(); //与目标数据库能够建立的最大connection数量为50 builder.connectionsPerHost(50); //如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待 builder.threadsAllowedToBlockForConnectionMultiplier(50); //一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟 //这里比较危险,如果超过maxWaitTime都没有获取到这个连接的话,该线程就会抛出Exception //故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败 builder.maxWaitTime(1000*60*2); //与数据库建立连接的timeout设置为1分钟 builder.connectTimeout(1000*60*1); //===================================================// MongoClientOptionsmco=builder.build(); returnnewMongoClient(serverList,mcList,mco); }catch(Exceptione){ throwe; } } /** *@paramdbname *@return *@throwsException */ publicstaticDBgetDB(Stringdbname)throwsException{ returngetMongoClient().getDB(dbname); } /** *@paramdb */ publicstaticvoidcollections(DBdb){ Set<String>colls=db.getCollectionNames(); for(StringcollName:colls){ System.out.println(collName); } } /** *记录总数查询 * *@paramdb *@paramname */ publicstaticvoidcount(DBdb,Stringname){ DBCollectiondbColl=db.getCollection(name); intcount=dbColl.find().count(); System.out.println("共有:"+count+"个"); } /** *模糊查询 * *@paramdb *@paramname */ publicstaticvoidquery(DBdb,Stringname){ DBCollectiondbColl=db.getCollection(name); //完全匹配 //Patternpattern=Pattern.compile("^name$",Pattern.CASE_INSENSITIVE); //右匹配 //Patternpattern=Pattern.compile("^.*name$",Pattern.CASE_INSENSITIVE); //左匹配 //Patternpattern=Pattern.compile("^name.*$",Pattern.CASE_INSENSITIVE); //模糊匹配 Patternpattern=Pattern.compile("^.*name8.*$",Pattern.CASE_INSENSITIVE); BasicDBObjectquery=newBasicDBObject(); query.put("name",pattern); BasicDBObjectsort=newBasicDBObject(); //1,表示正序;-1,表示倒序 sort.put("name",1); DBCursorcur=dbColl.find(query).sort(sort); intcount=0; while(cur.hasNext()){ DBObjectobj=cur.next(); System.out.print("name="+obj.get("name")); System.out.print(",email="+obj.get("email")); System.out.println(",passwd="+obj.get("passwd")); count++; } System.out.println("共有:"+count+"个"); } /** *分页查询 * *@paramdb *@paramname *@paramstart *@parampageSize */ publicstaticvoidpage(DBdb,Stringname,intstart,intpageSize){ DBCollectiondbColl=db.getCollection(name); BasicDBObjectsort=newBasicDBObject(); sort.put("name",1); DBCursorcur=dbColl.find().sort(sort).skip(start).limit(pageSize);; intcount=0; while(cur.hasNext()){ DBObjectobj=cur.next(); System.out.print("name="+obj.get("name")); System.out.print(",email="+obj.get("email")); System.out.println(",passwd="+obj.get("passwd")); count++; } System.out.println("共有:"+count+"个"); } /** *@paramargs *@throwsException */ publicstaticvoidmain(String[]args)throwsException{ DBdb=getDB("demo"); collections(db); Stringname="users"; System.out.println("count()================================================="); count(db,name); System.out.println("query()================================================="); query(db,name); System.out.println("page()================================================="); page(db,name,10,10); } }
以上就是Java操作MongoDB模糊查询和分页查询的实现代码,希望对大家的学习有所帮助。