我正在尝试使用 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/