java - 自定义查询正则表达式 MongoDB + Spring Data

标签 java mongodb spring-data spring-data-mongodb

我正在尝试使用 MongoDB 在 Spring Data 中编写一个“startsWith”查询。如果我在 Mongo shell 中编写它,它会工作,列出每个以字母 x 或 X(不区分大小写)开头的电子邮件地址:db.user.find({email:/^x/i})

但是,这不会:

@Query(value = "{'$or':[{'name':?0},{'email':?0}]}")
List<User> findAllByFreeTextSearch(String keyword);

我尝试将/^.../i 添加到关键字本身,并以十几种组合方式添加到 @Query 但没有成功。正确的语法是什么?

最佳答案

/expression/是 shell 和 js 驱动程序中使用的替代语法。

您需要将“^x”作为 java 驱动程序的关键字传递。

尝试

@Query(value = "{$or:[{name:{$regex:?0,$options:'i'}},{email:{$regex:?0,$options:'i'}}]}")
List<User> findAllByFreeTextSearch(String keyword);

关于java - 自定义查询正则表达式 MongoDB + Spring Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53792312/

相关文章:

JavaFx Webview转到移动站点-(使用jdk 7)

mongodb - 如何通过平均旧数据来减少 Mongo 数据库

java - Spring Boot 应用程序 SocketException 与 Cosmos DB

java - 在 MongoDB 中强制执行模式验证

java - 返回 Java 8 流的 Spring 存储库方法不会关闭 JDBC 连接

rest - 可选择在 Spring Data Rest 中禁用 HATEOAS 格式

java - Android "onRequestPermissionsResult"未被调用

java - 最终不可修改的集合线程安全吗?

java - Hibernate错误查询生成

Spring 数据锁定