Java Spring数据mongodb如何使用通配符?

时间:2015-08-28 04:37:35

标签: java spring mongodb spring-data

我的mongodb中有一个名为“name”的字段。我在spring数据中使用注释来支持查询。我的问题是,有没有办法支持通配符?即如果我有名称为“Robert”,“Roberto”“Ramano”的值,我可以支持允许我将“R”传递给函数的查询,并且它将匹配以R开头的所有内容?现在我必须基本上做一个罗伯特的“精确拼写”,或者任何一个这样的名字才能得到完全匹配。

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

db.users.find({"name": /.*m.*/})

我不知道如何将其转换为java,因为我想传递一个变量。例如:

伪代码:

String myvar = "R";
db.users.find({/.*<variable here>*/})

以下是我在“MongoRepository”实现中的内容:

public interface UserRepository extends MongoRepository<UserId, String> {
{
    @Query("{'name' : {$regex : ?0}}")
    public List<Users> findByName(String username);
}

当我传出全名“罗伯特”时,它就能找到“罗伯特”。但是,如果我输入“R”,它就找不到任何东西。

2 个答案:

答案 0 :(得分:6)

您是否使用query method进行了尝试?

function Manager() {
  Employee.call(this);
  this.reports = [];
}
Manager.prototype = Object.create(Employee.prototype);

答案 1 :(得分:0)

为什么不按以下方式使用正则表达式:

apollo-server

并在您的服务中形成如下查询:

public interface UserRepository extends MongoRepository<UserId, String> {
{
    @Query("{'name' : {$regex : ?0}}")
    public List<Users> findByName(String regexp);
}

here的第4.2节中找到更详细的答案