大写的mongoDB spring-boot自定义查询,带有LIKE
Posted
技术标签:
【中文标题】大写的mongoDB spring-boot自定义查询,带有LIKE【英文标题】:mongoDB spring-boot custom query in uppercase, with LIKE 【发布时间】:2018-04-26 02:12:27 【问题描述】:我需要通过 mongodb 实现的 db 上的 spring boot 按名称搜索项目。对于普通的 SQL 数据库,我会这样做:
@Query("SELECT * FROM customer WHERE UPPER(name) LIKE UPPER(CONCAT('%', :name, '%'))")
List<Customer> findByName(@Param("name") String name);
但它不接受普通的“SELECT”查询,因为它是一个 NoSQL 数据库。因此我需要使用 JSON 格式查询这个集合,但我不知道 spring-boot 上的实现。这也是我第一次使用 mongodb。
浏览***上的帖子,我发现了一个例子,例如:
@Query("'name':?0")
在this site 上有例子。 here 也有上面查询的解释。但是我仍然不知道如何将上面粘贴的前一个查询转换为“基于 json 的查询”。
注意:我正在我的存储库上扩展 MongoRepository。
注意2:上述查询区分大小写,这就是我尝试以大写查询同时将列数据转换为大写的原因。
更新
@Query(" $text: $search: ?0 , $caseSensitive: false ")
完美运行(我必须通过启动此命令来索引我的收藏:db.customerCollection.createIndex(name: "text")
)以忽略大小写敏感,但我仍然需要实现'LIKE';因为当我搜索“用户”时,它能够找到“用户”等。但是如果我搜索“se”,它不会给我带来任何结果。任何帮助将不胜感激!
感谢您的宝贵时间!
【问题讨论】:
你试过这个查询 $text: $search: ?0 , $caseSensitive: true 。您可以查看此内容以供参考。 docs.mongodb.com/manual/reference/operator/query/text/… 您好,谢谢您的回答。它给了我一个错误消息:“$ text 查询需要文本索引”。现在我正在寻找解决它的方法。 我已将索引添加到我的收藏中,并且一切正常!剩下的唯一事情就是现在实现 LIKE 。当我搜索“红色”时,它会找到“红色”,但如果我只搜索它的一部分,它就无法找到该对象。我现在会更新我的问题 【参考方案1】:我已通过使用$regex
并将查询编写为:
@Query(" companyName: $regex : '(?i)?0' ")
我从来没有想过会花这么多时间来做这么简单的事情。但我很高兴它无论如何都解决了!
[ref]
【讨论】:
以上是关于大写的mongoDB spring-boot自定义查询,带有LIKE的主要内容,如果未能解决你的问题,请参考以下文章
测试开发专题:spring-boot自定义返回参数校验错误信息
测试开发专题:spring-boot自定义返回参数校验错误信息