2016-04-26 3 views
0

Wenn ich überprüfen möchte, ob ein Datum zwischen einem Datumsbereich liegt. Ich kann so etwas tun.Spring Data MongoDB prüfen, ob das Feld existiert und dann abfragen

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"); 

Aber nehmen wir die validTill in einigen Fällen nicht vorhanden ist, was der bequemste Weg, dies zu tun. Es sollte also so etwas wie überprüfen, ob validTill existiert dann vergleichen Sie das angegebene Datum innerhalb des Datumsbereichs sonst finden Sie einfach die Datensätze, in denen effectiveFrom ist kleiner oder gleich dem angegebenen Datum.

+0

http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb-template-query.criteria Betrachten Sie existiert. Wenn validTill vorhanden ist und wenn validTill größer als date ist. –

Antwort

0

Sie könnten versuchen, den orOperator in Abfrage mit Angabe sowohl die Bedingungen, die Sie in Ihrem question.One haben würde beiden Daten bestehen, wie Sie bereits und andere haben müssen

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

Dies würde zumindest sicherzustellen, dass Sie verlieren keine Daten.

+0

query.addCriteria (new Criteria(). OrOperator (neue Kriterien(). AndOperator (Kriterien.where ("effectiveFrom"). Lte (Datum), Kriterien.where ("validTill"). Gte (Datum)), new Criteria() .undOperator (Criteria.where ("effectiveFrom"). lte (Datum), Criteria.where ("validTill"). exists (false)) )); ....... Versuchen Sie es, wenn es funktioniert –

Verwandte Themen