日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法

發布時間:2025/3/15 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java操作MongoDB插入數據進行模糊查詢與in查詢功能

由于需要用MongoDB緩存數據,所以自己寫了一套公共的存放和讀取方法

具體如下:

存放mongodb:

/**

* 公共方法:設置Object類型緩存

* @author shijing

* @param param

* @param sysGuid

*/

public void setObjData(Map param, String sysGuid, String enumBpd){

DBObject dbObject = new BasicDBObject();

dbObject.putAll(param);

String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;

mongoDao.insertToCol(dbObject,collectionName);

}

/**

* 公共方法:設置List緩存

* @author shijing

* @param paramList

* @param sysGuid

*/

public void setListData(List> paramList, String sysGuid, String enumBpd){

List list = new ArrayList<>();

if(CollectionUtils.isNotNull(paramList)){

for (Map param : paramList){

DBObject dbObject = new BasicDBObject();

dbObject.putAll(param);

list.add(dbObject);

}

}

String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;

mongoDao.insertToCol(list,collectionName);

mongoDao里面的方法:

public void insertToCol(DBObject document, String collectionName) {

dropCol(collectionName);

DBCollection dbCollection = mongoTemplate.createCollection(collectionName);

dbCollection.insert(document);

}

public void insertToCol(List documents, String collectionName) {

dropCol(collectionName);

DBCollection dbCollection = mongoTemplate.createCollection(collectionName);

dbCollection.insert(documents);

}

讀取方法

/**

* 通過關鍵字模糊查詢問題和答案庫

* @param param

* @return

*/

@Override

public List> searchQuestionAndAnswerByKeyword(Map param) {

List> searchList = new ArrayList<>();

Map userInfo = SessionUtils.getUserInfo();

String sysGuid = userInfo.get("sys_guid").toString();

String collectionName = EnumBpd.getBpdType(EnumBpd.HELP_PAGE_LIST.getType())+sysGuid;

//注釋里面這種方式雖然能模糊查詢,但是容易漏掉數據,切記切記!!!

//Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$", Pattern.CASE_INSENSITIVE);

BasicDBObject query= new BasicDBObject();

//模糊查詢的字段設置

query.put("page_html", Pattern.compile((String) param.get("keyword")));

DBCursor dbCursor = mongoDao.findAll(query,collectionName);

List list = dbCursor.toArray();

for (DBObject dbObject: list){

searchList.add(dbObject.toMap());

}

//模糊查到的數據進行組裝

return getQuestionAndAnswerList(searchList);

}

/**

* 公共方法:批量—— in方法查詢List數據

* @author shijing

* @param ids id集合

* @param paramMap 其他參數

* @param columnName in字段列名

* @param collectionName 表名

* @return

*/

@Override

public List> batchSearchPageListByIds(List ids, Map

Object> paramMap, String columnName, String collectionName) {

List> searchList = new ArrayList<>();

BasicDBObject query= new BasicDBObject();

//批量查詢,in

if (CollectionUtils.isNotEmpty(ids)){

BasicDBList values = new BasicDBList();

values.addAll(ids);

query.put(columnName, new BasicDBObject("$in",values));

}

//拼接參數

if(MapUtils.isNotEmpty(paramMap)){

for (String mapKey: paramMap.keySet()){

query.put(mapKey, paramMap.get(mapKey));

}

}

DBCursor dbCursor = mongoDao.findAll(query,collectionName);

List list = dbCursor.toArray();

if (dbCursor!=null && dbCursor.size()>0){

for (DBObject dbObject: list){

searchList.add(dbObject.toMap());

}

}

return searchList;

}

/**

* 公共方法:通過參數獲取List數據

* @author shijing

* @param paramMap 參數

* @param collectionName 表名

* @return

*/

@Override

public List> getListByParam(Map paramMap,String collectionName){

List> searchList = new ArrayList<>();

BasicDBObject query= new BasicDBObject();

//拼接參數

if(MapUtils.isNotEmpty(paramMap)){

for (String mapKey: paramMap.keySet()){

query.put(mapKey, paramMap.get(mapKey));

}

}

DBCursor dbCursor = mongoDao.findAll(query,collectionName);

List list = dbCursor.toArray();

if (dbCursor!=null && dbCursor.size()>0){

for (DBObject dbObject: list){

searchList.add(dbObject.toMap());

}

}

return searchList;

}

/**

* 公共方法:通過參數獲取Object數據

* @author shijing

* @param paramMap

* @param collectionName 表名

* @return

*/

@Override

public Map getObjectByParam(Map paramMap, String collectionName) {

Map webSiteInfo = new HashMap<>();

BasicDBObject query= new BasicDBObject();

//拼接參數

if(MapUtils.isNotEmpty(paramMap)){

for (String mapKey: paramMap.keySet()){

query.put(mapKey, paramMap.get(mapKey));

}

}

DBObject dbObject = mongoDao.findOne(query,collectionName);

if(dbObject!=null){

return dbObject.toMap();

}

return webSiteInfo;

}

注意事項:

mongodb模糊查詢時

Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$"

這種方式存在bug, 容易漏掉數據

應該使用下面這種方式:

query.put("page_html", Pattern.compile((String) param.get("keyword")));

先記錄到這吧,有需要在補充,批量in方法也在上述代碼里面。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對碼農之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

以上就是本次給大家分享的關于java的全部知識點內容總結,大家還可以在下方相關文章里找到相關文章進一步學習,感謝大家的閱讀和支持。

您可能感興趣的文章:

總結

以上是生活随笔為你收集整理的java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。