mongoDB spring-boot自定义查询,大写,带LIKE



我需要通过spring-boot在mongodb实现的数据库上按名称搜索项目。对于一个正常的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

浏览stackoverflow上的帖子,我发现了一个例子,比如:

@Query("{'name':?0}")

在这个网站上有一些例子。这里还有对上述查询的解释。然而,我仍然不知道如何将上面粘贴的前一个查询转换为"基于json的查询"。

注意:我正在我的存储库上扩展MongoRepository。

注意2:上面的查询是区分大小写的,这就是我尝试用大写进行查询以及将列数据转换为大写的原因。

更新

@Query(" { $text: { $search: ?0 , $caseSensitive: false } }")

工作得很好(我必须通过启动以下命令来索引我的集合:db.customerCollection.createIndex({name: "text"}))以忽略区分大小写,但我仍然需要实现">LIKE";因为当我搜索"user"时,它可以找到"user"等。但如果我搜索"se",它不会给我带来任何结果。任何帮助都将不胜感激!

感谢您抽出时间!

我已经通过使用$regex并将查询写成:来解决问题

@Query(" { companyName: { $regex : '(?i)?0'}  } }")

我从来没有想到会花那么多时间做这么简单的事情。但我很高兴它无论如何都得到了解决!

[ref]

最新更新