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

使用MongoRepository在springBoot中查询MongoDb

刁英朗
2023-03-14

我在GET api中有多个查询参数(如姓名、年龄、性别、位置等…n个数字)。现在我需要使用这些查询值来查询我的mongo数据库。现在用户可以发送从0到n的查询参数。

我正在尝试使用类似的东西

findByNameAndAge(String Name , String Age)

或者

findByNameAndAgeAndGender(String Name , String Age, String Gender)

但问题是,考虑到用户可以发送的所有排列和组合,我将不得不编写多个查询。有没有更好的方法来做到这一点?

共有2个答案

施令秋
2023-03-14

在你的情况下,你可以使用

<S extends T> Iterable<S> findAll(Example<S> example);

因此,第一步是根据请求参数创建一个示例,要做到这一点,您需要创建实体的一个实例,该实例具有要查询的所需属性的值,其他属性的值为null。例如,如果查询中有“名称”和“年龄”作为参数。因此,您只需设置实体的名称和年龄,并让其余属性为空。如果你有你的实体,你应该创建一个例子并查询它。

Example<ENTITY_CLASS> example = Example.of(createdEntity);
return repository.findAll((example);

还有一些其他选项可以使用Example和ExampleMatcher使startwith contains和regex区分大小写。您还可以设置他是否需要在字段之间使用OR运算符。

你可以看看这里

董同
2023-03-14

您需要使用Mongo operations类,并根据传递的模型参数动态构建条件查询。为了简化操作,您可以坚持使用参数名称映射到实体属性约定。

 类似资料:
  • 我有一个MongoDB集合,其中包含以下字段的文档: 日期(日期obj) 我想用MongoRepository编写一个方法来查找日期在一系列日期中的所有文档,并且offerType包含列表中提供的字符串之一 文件: 日期:2019年4月10日,报价类型:报价1 我想要: 日期在9-04-2019和12-04-2019之间 以下优惠:Offer1、offer3 在上一个示例中,我将获得文档1和2。

  • 我刚刚开始使用Spring Boot,我想使用RestTemplate调用一个查询并返回它的结果。 如何使用RESTTemplate调用查询?还是有更好的办法做这件事?

  • 我正在尝试使用对mongo存储库进行自己的查询: 我想实现的是使用关键字搜索日期日志。上面抱怨了一个解析错误: 如果我将ISODate(?0)替换为简单的它生成包含未知实例的第1页,共0页 字符串 我怎么才能把我的约会对象弄进去?

  • 它可以工作,但我想知道它访问mongo的确切查询 怎么做? 我尝试在以下属性中添加一些配置: 也不工作。 有人能帮忙吗?

  • 问题内容: 我正在使用MongoRepository将Spring Data与MongoDB结合使用。 我想知道是否有可能使用查询注释通过过滤器进行删除。我一直在这里和谷歌,我找不到任何文档。 问题答案:

  • SpringDataJpa中 Specification怎样使用in查询 实体类Menu.java如下 想通过roles属性做in查询,代码如下 错误如下: Parameter value [com.appmtce.pojo.entity.role.Role@20f81e2a] did not match expected type [java.util.Collection (n/a)] 我的S