2016-04-26 13 views
0

をチェックします。私はこのようなことをすることができます。春データMongoDBは、フィールドが存在するかどうかを確認して、クエリ

Query query = new Query(); 
query.addCriteria(new Criteria().andOperator(Criteria.where("effectiveFrom").lte(date), 
     Criteria.where("validTill").gte(date))); 
return mongoTemplate.find(query, DocumentClass.class, "DocumentName"); 

しかしvalidTillは、いくつかのケースでは存在しない、これを行うための最も便利な方法何であると仮定します。したがって、validTillが存在する場合はチェックのようなものでなければなりません。そうでない場合は、日付範囲内の指定された日付を比較してください。そうでない場合は、effectiveFromが指定された日付以下であるレコードを見つけてください。

Criteria.where("effectiveFrom").lte(date),Criteria.where("validTill").exists(false)) 

これは、少なくともことを保証でしょう

+0

http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb-template-query.criteria見てください。 validTillが存在し、validTillがdateより大きい場合。 –

答えて

0

あなたは、あなたが既に持っているとの両方の日付で構成されますあなたのquestion.Oneを持っている両方の条件を指定してクエリでorOperatorを使用して試みることができる他の持っていますデータを失うことはありません。

+0

query.addCriteria(新しいCriteria().Operator (新しいCriteria().Operator(Criteria.where( "effectiveFrom").lte(date)、Criteria.where( "validTill").gte(date))、 新しいCriteria().Operator(Criteria.where( "effectiveFrom").Lte(date)、Criteria.where( "validTill")。exists(false)) )); .......作品 –

関連する問題