java like查询 mongodb_Java操作MongoDB模糊查询和分页查询

本文实例为大家分享了java操作mongodb模糊查询和分页查询,供大家参考,具体内容如下

模糊查询条件:

1、完全匹配

pattern pattern = pattern.compile("^name$", pattern.case_insensitive);

2、右匹配

pattern pattern = pattern.compile("^.*name$", pattern.case_insensitive);

3、左匹配

pattern pattern = pattern.compile("^name.*$", pattern.case_insensitive);

4、模糊匹配

pattern pattern = pattern.compile("^.*name8.*$", pattern.case_insensitive);

记录总数查询:

count(),返回查询总数。

查询记录排序:basicdbobject sort = new basicdbobject();

sort.put("name",1);

1、表示正序;-1.表示倒序

分页查询:skip(),跳过多少条记录

limit(),返回多少条记录

代码实例:

package com.what21.mongodb.demo;

import java.util.arraylist;

import java.util.list;

import java.util.set;

import java.util.regex.pattern;

import com.mongodb.basicdbobject;

import com.mongodb.db;

import com.mongodb.dbcollection;

import com.mongodb.dbcursor;

import com.mongodb.dbobject;

import com.mongodb.mongoclient;

import com.mongodb.mongoclientoptions;

import com.mongodb.mongocredential;

import com.mongodb.serveraddress;

public class operatedemo2 {

/**

* @return

* @throws exception

*/

public static mongoclient getmongoclient()throws exception{

try {

//===================================================//

list serverlist = new arraylist();

serverlist.add(new serveraddress("192.168.18.85", 27017));

//===================================================//

list mclist = new arraylist();

string username = "root";

string database = "demo";

char[] password = "root123".tochararray();

mclist.add(mongocredential.createcredential(username, database,password));

//===================================================//

mongoclientoptions.builder builder = 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);

//===================================================//

mongoclientoptions mco = builder.build();

return new mongoclient(serverlist, mclist, mco);

} catch (exception e) {

throw e;

}

}

/**

* @param dbname

* @return

* @throws exception

*/

public static db getdb(string dbname) throws exception{

return getmongoclient().getdb(dbname);

}

/**

* @param db

*/

public static void collections(db db){

set colls = db.getcollectionnames();

for (string collname : colls) {

system.out.println(collname);

}

}

/**

* 记录总数查询

*

* @param db

* @param name

*/

public static void count(db db,string name){

dbcollection dbcoll = db.getcollection(name);

int count = dbcoll.find().count();

system.out.println("共有: " + count + "个");

}

/**

* 模糊查询

*

* @param db

* @param name

*/

public static void query(db db,string name){

dbcollection dbcoll = db.getcollection(name);

//完全匹配

//pattern pattern = pattern.compile("^name$", pattern.case_insensitive);

//右匹配

//pattern pattern = pattern.compile("^.*name$", pattern.case_insensitive);

//左匹配

//pattern pattern = pattern.compile("^name.*$", pattern.case_insensitive);

//模糊匹配

pattern pattern = pattern.compile("^.*name8.*$", pattern.case_insensitive);

basicdbobject query = new basicdbobject();

query.put("name",pattern);

basicdbobject sort = new basicdbobject();

// 1,表示正序; -1,表示倒序

sort.put("name",1);

dbcursor cur = dbcoll.find(query).sort(sort);

int count = 0;

while (cur.hasnext()) {

dbobject obj = 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 + "个");

}

/**

* 分页查询

*

* @param db

* @param name

* @param start

* @param pagesize

*/

public static void page(db db,string name,int start,int pagesize){

dbcollection dbcoll = db.getcollection(name);

basicdbobject sort = new basicdbobject();

sort.put("name",1);

dbcursor cur = dbcoll.find().sort(sort).skip(start).limit(pagesize);;

int count = 0;

while (cur.hasnext()) {

dbobject obj = 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 + "个");

}

/**

* @param args

* @throws exception

*/

public static void main(string[] args) throws exception {

db db = getdb("demo");

collections(db);

string name = "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模糊查询和分页查询的实现代码,希望对大家的学习有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!


版权声明:本文为weixin_42511121原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。