使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?相关的知识,希望对你有一定的参考价值。

public <T> List<T> queryCommunityByKeyword(String keyword, Integer page, Integer pageSize)
Query query = new Query();
query.addCriteria(Criteria.where("communityName").regex(keyword)
.orOperator(Criteria.where("announcement").regex(keyword)
.orOperator(Criteria.where("remark").regex(keyword))))
.skip( (page - 1) * pageSize).limit(pageSize);//分页
System.out.println(query);
List<SmsCommunity> list = mongoTemplate.find(query, SmsCommunity.class);
if(list == null || list.size() < 1)
return null;

return (List<T>) list;

以上是接口的实现代码;
Query: "communityName" : "$regex" : "车" , "$or" : [ "announcement" : "$regex" : "车" , "$or" : [ "remark" : "$regex" : "车"]], Fields: null, Sort: null
以上是后台打印的查询语句;
我要的效果是(Oracle):
SELECT * FROM tbl_name WHERE communityName LIKE ? OR announcement LIKE ? OR remark LIKE ?
可是上面的mongoTemplate代码查出来的不是这样的,后面两个or的条件直接被忽略了.

下面是我用到的spring整合mongodb的包:
import org.springframework.data.mongodb.core.MongoTemplate;
自己已经解决了,另申请一个号给回答了吧

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题如下:

在使用SpringMVC框架时,配置web.xml文件时,springDispatcherServlet的配置:

可以看到servlet过滤的是所有的请求url,因此当浏览器在访问css、js、image等静态资源时也需要通过验证是否已经有相关的映射,如果没有则无法访问到(有时可能会觉得是路径配置不对,但是你会发现无论怎么改路径都访问不到),比如你在controller里注解了一个请求的 url,那么你就可以访问到你想获取的资源或者页面,但是静态资源时没有注解的,所以当你在页面上使用css或者引入js文件时就无法访问。

解决方法:

1、添加默认的servlet-mapping :

2、将你所需要访问静态资源添以通配符的形式加到web.xml的servlet-mapping中,就可以轻松地访问到你精心设计的js和css了。

参考技术A 代码如下:
Query query = new Query();
Criteria cr = new Criteria();
query.addCriteria(cr.orOperator(
Criteria.where("communityName").regex(keyword)
,Criteria.where("communityName").regex(keyword)
,Criteria.where("remark").regex(keyword)
));

打印的SQL语句如下:
Query: "$or" : [ "communityName" : "$regex" : "俗" , "communityName" : "$regex" : "俗" , "remark" : "$regex" : "俗"], Fields: null, Sort: null本回答被提问者采纳
参考技术B 卧槽,楼主你这个怎么解决的啊?

用Node.JS+MongoDB搭建个人博客(安装环境)

Node.JS是什么?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

Node.js是由C++开发的,其实是一个JS运行环境,可以让JavaScript运行在服务器上。

安装环境

安装Node.JS和NPM

首先进入NodeJS官网选择自己对应的系统下载最新版,我现在用的是window64位系统,所以选择了window64位版的msi文件。下载完成后安装

安装成功后检查是否安装成功,打开命令行输入以下代码查看版本号:

node -v

npm -v

有该提示版本号代表node和NPM环境已经安装完毕

 安装MongoDB数据库

首先进入MongoDB官网选择自己对应的系统下载最新版,我现在用的是window64位系统,所以选择了window64位版的msi文件。下载完成后安装

 

next 

在D盘中新建一个文件夹MongoDB,改变安装路径到D盘下的MongoDB文件夹下。

安装完成后要设置环境变量才能运行MongoDB

如何设置环境变量?

我的电脑-右键属性-高级系统设置-高级-环境变量

在PATH里的npm环境变量后面加个分号; 然后加上刚才所安装的路径 D:\\MongoDB\\bin 确定后就安装完毕了。

测试运行MongoDB

输入以下代码查看MongoDB版本号

mongod -v

这样可以清晰的看到db version v3.2.10

现在环境已经全部安装成功准备待发。

以上是关于使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC

Spring+SpringMVC+MongoDB案例

无法查询 findOne - SpringMVC MongoDB

使用 mongoDB 启动 H2 DB

使用SpringMVC返回java对象数据时会自动转为json格式传给前端

O'Reilly:深入学习MongoDB pdf