java - mongotemplate - Datos de primavera MongoDB fecha entre
spring mongorepository (5)
Esto funciona en la versión 2.7.2 del controlador Java
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);
Además, para el registro tiene "startDate" para los parámetros gte y lte.
Yo uso la primavera de datos mongodb.
Quiero los registros entre dos fechas. La siguiente consulta de MongoDB funciona:
db.posts.find({startDate: {$gte: start, $lt: end}});
Mi intento de traducción de código de objeto de consulta de datos de Spring no funciona:
Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
.and("startDate").lt(endDate));
¿Cuál es el orden correcto de las llamadas a métodos para construir la consulta Mongo que necesito?
Funciona, es un código de ejemplo:
Criteria criteria = Criteria.where("pt").gte(startDate)
.andOperator(Criteria.where("pt").lt(endDate));
No incluya la parte '' y ("fecha de inicio") en sus criterios.
En lugar de :
query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));
Deberías usar:
query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));
Cuando incluye la parte ''y ("fecha de inicio")'', Mongo lo ve como dos entradas diferentes en la misma propiedad.
Tuve que encontrar fechas entre el campo publishedDate
Fecha y aquí es cómo lo hice:
Criteria publishedDateCriteria = Criteria
.where("publishedDateObject").gte(psDate)
.lte(peDate);
Query query = new Query(publishedDateCriteria);
mongoTemplate.find(query,
MyDocumentObject.class));
Query query = new Query(
Criteria.where("ip").is(ip)
.andOperator(
Criteria.where("createdDate").lt(endDate),
Criteria.where("createdDate").gte(startDate)
)
);