我需要在 mongodb 实施的数据库上通过spring boot按名称搜索项目。对于普通的 SQL 数据库,我将按如下方式完成:
@Query("SELECT * FROM customer WHERE UPPER(name) LIKE UPPER(CONCAT('%', :name, '%'))")
List<Customer> findByName(@Param("name") String name);
然而,它不接受正常的SELECT&#39;查询,因为它是 NoSQL 数据库。因此,我需要使用 JSON 格式查询此集合,但我不知道spring-boot上的实现。这是我第一次使用 mongodb 。
通过stackoverflow上的帖子,我找到了一个例子:
@Query("{'name':?0}")
在this site上有例子。另外here还有对上述查询的解释。然而,我仍然不知道如何将我上面粘贴的前一个查询转换为基于&#34; json的查询&#34;。
注意:我正在我的存储库中扩展MongoRepository。
Note2 :上述查询区分大小写,这就是我尝试以大写形式查询并将列数据转换为大写的原因。
更新
@Query(" { $text: { $search: ?0 , $caseSensitive: false } }")
完美运行(我必须通过启动此命令来索引我的集合:db.customerCollection.createIndex({name: "text"})
)以忽略区分大小写,但我仍然需要实现&#39; LIKE &#39; ;因为当我搜索“用户”时,它能够找到“用户”和“用户”。但是,如果我搜索“它”,它并没有给我带来任何结果。任何帮助将不胜感激!
感谢您的时间!
答案 0 :(得分:0)
我已使用$regex
解决了我的问题并将查询编写为:
@Query(" { companyName: { $regex : '(?i)?0'} } }")
我绝不会猜到要花那么多时间来做这么简单的事情。但我很高兴它无论如何都得到了解决!