当前位置: 首页 > 知识库问答 >
问题:

Spring mongoDB存储库返回0个条目用于查询列表类型的字段

袁成化
2023-03-14

我正在尝试从mongoDB文档集合中获取评论匹配特定输入关键字的用户列表。

我的用户文档定义如下

      public class User {
        @Id
        private String id;
        private String name;
        List<String> comments; 
      }

我的Spring存储库代码看起来像

     @RepositoryRestResource(collectionResourceRel = "user", path = "user")
      public interface UserRepository extends 
 MongoRepository<User,String>,CustomUserRepository {


     @Query(value = "{'comments': ?0} ")
     List<User> findByComments(String username);

     List<User> findByCommentsIn(List<String> comments);

     List<User> findBycomments(String username);

当我从mongo shell查询它时,它工作正常,db.user.find({"注释": /test/})返回预期的结果。

但Spring数据mongodb也不适用。

并且我还尝试使用Custom Repository,使用mongo模板。代码片段如下Query query=new Query()

    query.addCriteria(
            Criteria.where("comments").in("/"+user+"/")             
     );     

    List<User> result =  mongoTemplate.find(query, User.class);

共有1个答案

叶英哲
2023-03-14

经过进一步研究,如果我在查询方法中使用$regex,它就会起作用@查询(value=“{'comments':{$regex:?0}}”)列表findByComment(字符串注释);

另外,有兴趣知道如何调试此类问题。

 类似资料:
  • 我试图获取一个列表从数据库和findAll()返回空列表。我有多个jpa存储库,但只有一个不工作。这是代码: 这就是实体: 当我调用product类别epository.findAll()时,它返回空列表,因此我在数据库中有许多条目。谢谢你的帮助!

  • 问题内容: 一个简单的问题:如何返回MySQL表的字段类型。我知道还是但是我只想返回那个单个参数。例如: 问题答案: 您可以使用 这将以以下格式返回结果

  • 问题内容: 我有一个简单的准备好的声明,用于实际存在的电子邮件: 结果:在应回显时回显 我在控制台中运行了相同的查询,并使用与上述相同的电子邮件得到了结果。 我也使用一个简单的mysqli查询进行了测试: 结果:我所期望的 还的是1。 为什么准备的陈述 不大于0? 问题答案: 当您通过mysqli执行一条语句时,直到您获取结果,结果才真正在PHP中出现- 结果由数据库引擎保存。因此,对象无法知道执

  • 问题内容: 我有一个带有文档条目的父表,还有一个历史记录表,每次用户访问其中一个文档时,该表都会记录一个审计条目。 我正在编写一个搜索查询,以返回具有最新用户ID的文档列表(按各种条件过滤),以访问结果集中返回的每个文档。 因此对于 我希望从搜索中获得回报,例如 我可以轻松地通过一个SQL查询以及两个表之间的联接来做到这一点吗? 问题答案: 修改Andy White产生的内容,并用DB2(和ISO

  • 我保留了一份按“顺序”排列的产品清单。当我试着从房间里拿一份产品清单的时候。我得到以下错误。但我做了一个TypeConvertor。会有什么错误呢? 订单 产品 命令道 转换器 错误 java:53:错误:查询返回的列在com.vepe.navigation.model.entity.product中没有字段[id,orderId,name,pathImage,price,priceDiscoun

  • 我是mongoDB的新手,使用2.6.4版。我被困在编写mongo查询和在这里寻求专家的帮助。 我在myCollection中有以下示例文档: 如何编写mongo查询,从满足以下条件的myCollection中提取文档: 返回所有只有标记状态记录的msgID(即排除那些具有INITIATED或CLOSED状态条目的msgID)。 以及时间发送的位置 预期结果为: 我知道在SQL中,这可以通过以下查