如何使用Spring JPA沿着StartingWIth查询MongoDB

envsm3lx  于 8个月前  发布在  Spring
关注(0)|答案(1)|浏览(52)

我的mongo数据库中有一些文档的_id定义为string_id s的典型值为

  • abc#1234
  • abc#2345
  • aby#5678
  • abx#123

我想在abc#周围做一个前缀查询,返回abc#1234abc#2345(考虑到_id在Mongo中是排序的,我认为前缀查询将是有效的-比2ndry索引更有效-如果我错了请纠正我)
我尝试了下面的方法,它返回了一个大小为0的列表。

@Repository
public interface DBEntityRespository  extends MongoRepository<DBEntity, String> {
    public List<DBEntity> findByIdStartingWith(String id);
}

实体被定义为…

@Document(collection = "someDBEntity")
@Data
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DBEntity {

    @Id
    @JsonProperty("_id")
    private String id;
...
...
...
}

我调用存储库如下

@GetMapping("/v1/x")
    public String hi(){
        List<DBEntity> list = repo.findByIdStartingWith("abc");// << tried with ^abc , /abc/, abc.* but no luck
        System.out.println(list.size() ); // << returns list of size 0
        return "success";
    }

有没有想过如何解决这个问题?并返回匹配前缀abc的完整文档??

olmpazwi

olmpazwi1#

你可以试试这个查询

@Query("{ 'id' : { $regex: '^?0', $options: 'i' } }")
public List<DBEntity> findByIdStartingWith(String id);

相关问题