JavaSpringDataMongoDB如何使用通配符?

JavaSpringDataMongoDB如何使用通配符?,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,我的mongodb中有一个名为“name”的字段。我在spring数据中使用注释来支持查询。我的问题是,有没有办法支持通配符?i、 e.如果我有名为“Robert”、“Roberto”和“Ramano”的“name”的值,我可以支持允许我将say“R”传递给函数的查询,它将匹配以R开头的所有内容?现在我基本上要对罗伯特或其中任何一个名字进行“精确拼写”,以获得精确匹配 我知道如何直接使用mongodb进行通配符搜索,但不知道如何在java中使用spring数据进行通配符搜索。我有一个模型类,表示

我的mongodb中有一个名为“name”的字段。我在spring数据中使用注释来支持查询。我的问题是,有没有办法支持通配符?i、 e.如果我有名为“Robert”、“Roberto”和“Ramano”的“name”的值,我可以支持允许我将say“R”传递给函数的查询,它将匹配以R开头的所有内容?现在我基本上要对罗伯特或其中任何一个名字进行“精确拼写”,以获得精确匹配

我知道如何直接使用mongodb进行通配符搜索,但不知道如何在java中使用spring数据进行通配符搜索。我有一个模型类,表示我的学生文档,我使用注释来描述如何查询

db.users.find({"name": /.*m.*/})
我不知道如何将其转换为java,因为我想传入一个变量。例如:

伪代码:

String myvar = "R";
db.users.find({/.*<variable here>*/})
String myvar=“R”;
db.users.find({/**/})
以下是我对“MongoRepository”实现的了解:

public interface UserRepository extends MongoRepository<UserId, String> {
{
    @Query("{'name' : {$regex : ?0}}")
    public List<Users> findByName(String username);
}
public interface UserRepository扩展了MongoRepository{
{
@查询(“{'name':{$regex:?0}}”)
公共列表findByName(字符串用户名);
}
当我输入全名“Robert”时,它就能找到“Robert”。但是,如果我输入“R”,它什么也找不到。

你试过吗

public interface UserRepository扩展了MongoRepository{
{
公共列表findByNameLike(字符串用户名);
}

为什么不使用正则表达式,就像您试图以以下方式使用正则表达式一样:

public interface UserRepository extends MongoRepository<UserId, String> {
{
    @Query("{'name' : {$regex : ?0}}")
    public List<Users> findByName(String regexp);
}
public interface UserRepository扩展了MongoRepository{
{
@查询(“{'name':{$regex:?0}}”)
公共列表findByName(字符串regexp);
}
在您的服务表单中,有一个类似这样的查询:

@Mock
UserRepository userRepository; 

String queryInput = "^R.*$";
List<Users> users = userRepository.findByName(queryInput);
@Mock
用户存储库用户存储库;
字符串queryInput=“^R.*$”;
List users=userRepository.findByName(queryInput);

请在第4.2节中找到更详细的答案。

基本上任何带有正则表达式或可能和/或
$in
运算符的对象的可能重复项,该运算符除了支持精确参数列表外,还支持正则表达式。@BlakesSeven不是重复项。这个问题专门针对Spring数据。@chrylis那又怎样最终结果是一样的,那就是“使用正则表达式”。下次你决定变得如此“强大”时,请阅读修订历史,并意识到副本被标记为“之前”所有对该问题的修改都是为了将其转化为当前形式。现在,根据是否有合理的结果,它可能不值得立即结束。届时我可能会重新考虑。好吗?请注意“零”来自OP的交流。这可能会更好。没有任何修订的原始问题特别包含“但不确定如何在java中使用spring数据实现它”,“我正在使用spring数据中的注释来支持查询”是的!!!这正是我一直在寻找的。祝福你们阅读文档,为Spring实现这样的魔法而干杯。
@Mock
UserRepository userRepository; 

String queryInput = "^R.*$";
List<Users> users = userRepository.findByName(queryInput);