我的mongo数据库中有_id定义为string的文档.百人S的典型数值是

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

我想在abc#左右执行前缀查询以返回abc#1234abc#2345个(考虑到_id在Mongo中排序,我认为前缀查询将是高效的--比2nry索引更高效--如果我错了,请纠正我)

我try 了下面的方法,它返回了一个尺寸为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";
    }

对如何解决这个问题有什么 idea 吗?并返回与前缀abc匹配的完整文档??

推荐答案

您可以try 此查询

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

Java相关问答推荐

泽西岛:退回到不注射的客户"

我应该避免在Android中创建类并在运行时编译它们吗?

为什么我的画布没有显示在PFA应用程序中?

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

如何配置ActiveMQ Artemis以使用AMQP 1.0和其他协议与Java

Spring Boot@Cachebale批注未按预期工作

这是什么Java构造`(InputStream Is)->;()->;{}`

为什么使用JDK21获取锁定锁比使用JDK11慢

使SLF4J在Android中登录到Logcat,在测试中登录到控制台(Gradle依赖问题)

在处理2个映射表时,没有更多的数据可从套接字读取

是否为计划任务补偿系统睡眠?

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

寻找Thread.sky()方法的清晰度

如何在SWT菜单项文本中保留@字符

为什么JavaFX MediaPlayer音频播放在Windows和Mac上运行良好,但在Linux(POPOS/Ubuntu)上却有问题?

在Java Spring JPA中插入包含对其他实体的引用的列

我们可以在方法中声明接口吗?

使用同步方法中的新线程调用同步方法

整数->;双取消框,但双->;int不';t开箱.为什么?

读取ConcurrentHashMap中的可变对象