es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna manera de obtener solo la fecha de un campo de datetime almacenado como string en MongoDB? Estamos utilizando el controlador de Spring MongoDB.

Digamos que tengo un atributo de fecha almacenado en el formato dd/MM/YYYY HH:mm:ss, es decir, 22/12/2021 10:15:23. Ahora solo quiero obtener 22/12/2021 como un valor de fecha para poder realizar comparaciones de fechas. Quiero que esta operación se realice en la base de datos misma para poder hacer comparaciones de fechas como parte de la consulta/agregación misma. Por favor, tenga en cuenta que estoy utilizando el controlador Spring MongoDB.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer solo la parte de la fecha de un campo de marca de tiempo en MongoDB utilizando el controlador Spring MongoDB, podemos usar el framework de Aggregation. La etapa $project se puede utilizar para extraer la parte de la fecha, y $toDate se puede usar para convertir la cadena en un objeto de tipo Date. La consulta se puede construir de la siguiente manera:

    Aggregation aggregation = newAggregation(
      project("date").andExpression("toDate(substr(date, 0, 10))").as("dateOnly"),
      match(Criteria.where("dateOnly").gte(start).lte(end)),
    );
    

    En la consulta anterior, substr(date, 0, 10) se utiliza para extraer solo la parte de la fecha de la marca de tiempo, y toDate se utiliza para convertirla en un objeto de tipo Date. Los valores start y end se pueden utilizar para realizar comparaciones de fechas.

    Tenga en cuenta que si la colección contiene un gran número de documentos, el rendimiento de esta operación puede verse afectado. En esos casos, puede ser mejor almacenar la fecha en un campo separado en el formato yyyy-mm-dd, que se puede indexar y consultar fácilmente para realizar comparaciones de fechas.

Comments are closed.