繁体   English   中英

MongoDb 在springBoot中使用MongoRepository查询

[英]MongoDb Query In springBoot using MongoRepository

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

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

findByNameAndAge(String Name , String Age)

或者

findByNameAndAgeAndGender(String Name , String Age, String Gender)

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

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

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

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

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

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

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

你可以看看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM