【发布时间】:2014-10-26 20:48:03
【问题描述】:
我正在使用 Spring Data Mongo 和 Mongo DB;
在集合中,文档有一个字段,假设包含一个整数,我们称之为 myInt。
我想检索 myInt 介于 2 个动态整数之间的所有文档,例如:
myInt - dynInt1 < myInt < myInt + dynInt2
我需要在请求中使用 myInt 字段,我可以在 java 中预先计算它以在 creterias 中使用它。
【问题讨论】:
我正在使用 Spring Data Mongo 和 Mongo DB;
在集合中,文档有一个字段,假设包含一个整数,我们称之为 myInt。
我想检索 myInt 介于 2 个动态整数之间的所有文档,例如:
myInt - dynInt1 < myInt < myInt + dynInt2
我需要在请求中使用 myInt 字段,我可以在 java 中预先计算它以在 creterias 中使用它。
【问题讨论】:
在您的 SpringData 接口中尝试以下方法:
YourEntity findByMyIntLessThanAndMyIntGreaterThan(int min, int max);
接下来,执行一次 find 调用,获取 myInt 值并使用这两个值执行第二次调用:
int myInt = myRepository.findByXXXX().getMyInt();
int min = myInt - dynInt1;
int max = myInt + dynInt2;
myRepository.findByMyIntLessThanAndMyIntGreaterThan(min, max);
【讨论】:
是的,可以在SpringData中如下进行:
query.addCriteria(Criteria.where("field").gt(value1).lt(value2));
【讨论】:
如果您还想在标准中包含动态 int 值,请使用 gte(大于等于)和 lte(小于等于)。
【讨论】: