Ich benutze Spring Data Mongodb.
Ich möchte die Aufzeichnungen zwischen zwei Terminen. Die folgende MongoDB-Abfrage funktioniert:
db.posts.find({startDate: {$gte: start, $lt: end}});
Meine versuchte Spring-Datenabfrageobjekt-Codeübersetzung funktioniert nicht:
Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
.and("startDate").lt(endDate));
Wie ist die richtige Reihenfolge der Methodenaufrufe, um die benötigte Mongo-Abfrage zu erstellen?
Fügen Sie den Teil ' und ("startDate") ' nicht in Ihre Kriterien ein.
Anstatt :
query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));
Du solltest benutzen:
query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));
Wenn Sie den Teil "and (" startDate ")" hinzufügen, sieht Mongo es als zwei verschiedene Einträge in derselben Eigenschaft.
Query query = new Query(
Criteria.where("ip").is(ip)
.andOperator(
Criteria.where("createdDate").lt(endDate),
Criteria.where("createdDate").gte(startDate)
)
);
Dies funktioniert in Version 2.7.2 des Java-Treibers
DBCollection coll = db.getCollection("posts");
BasicDBObject date = new BasicDBObject();
date.append("$gte", new Date(startDate));
date.append("$lte", new Date(endDate));
DBObject query = new BasicDBObject();
query.put("date", date);
DBCursor cursor = coll.find(query);
Außerdem haben Sie für den Datensatz "startDate" für die Parameter "gte" und "lte".
Ich musste Datumsangaben auf dem Feld publishedDate
finden.
Criteria publishedDateCriteria = Criteria
.where("publishedDateObject").gte(psDate)
.lte(peDate);
Query query = new Query(publishedDateCriteria);
mongoTemplate.find(query,
MyDocumentObject.class));
Sie können auch eine Abfrage hinzufügen:
@Query("{'date' : { $gte: ?0, $lte: ?1 } }")
public List<AnyYourObj> getObjectByDate(Date from, Date to);
Oder richtige Federdaten-Methodensignatur:
public List<AnyYourObj> findByDateBetween(Date from, Date to);
Beide Ansätze liefern das gleiche Ergebnis . Sie können hier mehr lesen https://www.baeldung.com/queries-in-spring-data-mongodb Und hier https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/
Es funktioniert, er ist ein Beispielcode:
Criteria criteria = Criteria.where("pt").gte(startDate)
.andOperator(Criteria.where("pt").lt(endDate));
Mir hat das gefallen
public interface PolicyRepository extends MongoRepository<Policy, String> {
@Query("{ 'lastDate' : { $gt: ?1, $lt: ?2 } }")
public List<Policy> findAllPolicies(Date today,Date somedate);
}