【问题标题】:MongoDb Query In springBoot using MongoRepository使用 MongoRepository 在 springBoot 中查询 MongoDb
【发布时间】:2019-09-21 15:06:02
【问题描述】:

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

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

findByNameAndAge(String Name , String Age)

或者

findByNameAndAgeAndGender(String Name , String Age, String Gender)

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

【问题讨论】:

    标签: java spring-boot mongorepository


    【解决方案1】:

    您需要亲自动手使用 Mongo 操作类,并根据传递的模型参数动态构建条件查询。为了使事情更容易,您可以坚持将参数名称映射到实体属性约定。

    【讨论】:

      【解决方案2】:

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

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

      所以第一步是从您的请求参数创建一个示例,为此您需要创建一个实体实例,该实例具有要查询的所需属性的值,而其他属性则为 null。 例如,如果您有查询名称和年龄作为参数。因此,您只需设置实体的名称和年龄,并将其余属性设为 null。如果你有你的实体,你应该只创建示例并查询它。

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

      还有一些其他选项可以使用 Example 和 ExampleMatcher 以包含和正则表达式来区分大小写。你也可以设置他是否需要在字段之间使用OR或AND运算符。

      你可以看看here

      【讨论】:

        猜你喜欢
        • 2023-04-02
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-19
        • 2017-10-24
        • 2019-09-16
        • 1970-01-01
        相关资源
        最近更新 更多