Mongodb 如何在Spring data mongo中查询生日
我无法查询今天是谁的生日的所有记录。我只需要日月比赛 我尝试了许多组合,包括$match和$expr。似乎什么都没用Mongodb 如何在Spring data mongo中查询生日,mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我无法查询今天是谁的生日的所有记录。我只需要日月比赛 我尝试了许多组合,包括$match和$expr。似乎什么都没用 public interface GenericPolicyRepository extends MongoRepository<GenericPolicy, String> { @Query("{ 'agentId': ?0 , '$expr': { '$eq': [{ '$month': '$dateOfBirth' }, ?1]}, '$expr': {
public interface GenericPolicyRepository extends MongoRepository<GenericPolicy, String> {
@Query("{ 'agentId': ?0 , '$expr': { '$eq': [{ '$month': '$dateOfBirth' }, ?1]}, '$expr': { '$eq': [{ '$dayOfMonth': '$dateOfBirth' }, ?2]}}")
public List<GenericPolicy> findAllBirthDaysByAgent(String agentId, String month, String day);
}
//保险细节
public class InsuredDetails {
@NotNull
private String nationality;
@NotNull
private String fullName;
@NotNull
private String gender;
@NotNull
private Date dateOfBirth;
@NotNull
private String identityType;
@NotNull
private String identityNumber;
@NotNull
@Email
private String emailaddress;
@NotNull
@Size(max = 10,min = 10)
private String mobileNumber;
@NotNull
private String addressLine1;
@NotNull
private String addressLine2;
@NotNull
private String postCode;
}
请在下面的查询中尝试,其中dateOfBirth是保存在您的集合中的密钥。在这里,我们将当前日期的月份和月份与存储在集合中的日期进行匹配
{
$expr: {
"$and": [
{"$eq": [{"$dayOfMonth": "$dateOfBirth"}, {"$dayOfMonth": new Date()}]},
{"$eq": [{"$month": "$dateOfBirth"}, {"$month": new Date()}]}
]
}
}
根据所提到的类,给定文档有一个嵌套文档受保详细信息(假设在db中也是相同的名称)。此字段具有出生日期字段。记住这一事实,可以按如下方式编写查询
public interface GenericPolicyRepository extends MongoRepository<GenericPolicy, String> {
@Query("{'agentId': ?0 , '$expr': {'$and': [{'$eq': [{'$dayOfMonth': '$insuredDetails.dateOfBirth'}, {'$dayOfMonth': ?1}]}, {'$eq': [{'$month': '$insuredDetails.dateOfBirth'}, {'month': ?1}]}]}}")
public List<GenericPolicy> findAllBirthDaysByAgent(String agentId, Date birthDate);
}
公共接口GenericPolicyRepository扩展了MongoRepository{
@查询({'agentId':?0,$expr':{'$and':[{'$eq':[{'$dayOfMonth':'$insuredDetails.dateOfBirth'},{'$dayOfMonth':?1}]},{'$eq':[{'$month':'$insuredDetails.dateOfBirth'},{'month':?1}]})
公共列表findAllBirthDaysByAgent(字符串agentId,日期birthDate);
}
用法
public class GenericPolicyServiceImpl implements GenericPolicyService {
@Autowired
GenericPolicyRepository genericPolicyRepository;
public List<GenericPolicy> getAllBirthDaysByAgent(String agentId, String month, String day){
Calendar c = Calendar.getInstance();
int month = Integer.parseInt(month);
int day = Integer.parseInt(day);
c.set(0, month, day, 0, 0);
Date birthDate = c.getTime();
genericPolicyRepository.findAllBirthDaysByAgent(agentId, birthDate);
}
}
公共类GenericPolicyServiceImpl实现GenericPolicyService{
@自动连线
GenericPolicyRepository GenericPolicyRepository;
公共列表GetAllBirthdaysBagent(字符串agentId、字符串月份、字符串日期){
Calendar c=Calendar.getInstance();
int month=整数.parseInt(月);
int day=Integer.parseInt(天);
c、 设置(0,月,日,0,0);
Date birthDate=c.getTime();
genericPolicyRepository.findallbirthdaysYagent(agentId,生日);
}
}
谢谢,但这可以直接在mongo cli上运行。获取大量json解析器异常。我正在努力让它工作。嗨,你能显示“GenericPolicy”类定义吗???@Nithin我添加了它。It接口。是的,“GenericPolicyRepository”实体是一个接口,但我想问一下您的“GenericPolicy.class”文件。@Nithin。抱歉,我添加了所有必需的详细信息。非常感谢。它说未知的顶级操作exprIt是因为版本。我实际上是在活板门上测试它。这个也有语法错误。“{'agentId':?0,$redact':{”+“$cond':[“+”'$和“:[“+”{'$dayOfMonth':“$insuredDetails.dateOfBirth'},{'$dayOfMonth':?1},”+“{'$eq':[{'$month':“$insuredDetails.dateOfBirth'},{'month'+':“+”],“,“+”,“+”,“+”,“$$dayOfMonth':$1},”,“$”
public class GenericPolicyServiceImpl implements GenericPolicyService {
@Autowired
GenericPolicyRepository genericPolicyRepository;
public List<GenericPolicy> getAllBirthDaysByAgent(String agentId, String month, String day){
Calendar c = Calendar.getInstance();
int month = Integer.parseInt(month);
int day = Integer.parseInt(day);
c.set(0, month, day, 0, 0);
Date birthDate = c.getTime();
genericPolicyRepository.findAllBirthDaysByAgent(agentId, birthDate);
}
}