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.

Mongodb – Restar fechas

Tengo la siguiente base de datos

{ "_id" : 1, "time" : "Nov 26, 2021 14:06:30.092158000" }
...
...
{ "_id" : 9999, "time" : "Nov 27, 2021 12:45:01.134957000" }

Quiero restar las fechas Nov 27, 2021 12:45:01.134957000 – Nov 26, 2021 14:06:30.092158000 (última fecha – fecha inicial) y obtener el resultado en segundos.

¿Alguna recomendación?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para restar las dos fechas y obtener el resultado en segundos, puedes utilizar el framework de agregación en MongoDB.

    Aquí tienes un ejemplo de cómo lograrlo:

    db.collection.aggregate([
        {
            $project: {
                difference: {
                    $divide: [
                        {
                            $subtract: [
                                { $toDate: "$time" }, // convertir una cadena en un objeto de fecha
                                ISODate("2021-11-26T14:06:30.092Z") // fecha inicial en UTC
                            ]
                        },
                        1000 // convertir milisegundos a segundos
                    ]
                }
            }
        }
    ])
    

    Explicación:

    • $toDate se utiliza para convertir la fecha en formato de cadena en el campo time a un objeto de fecha.
    • $subtract se utiliza para restar la fecha inicial (ISODate("2021-11-26T14:06:30.092Z")) de la fecha en el campo time.
    • $divide se utiliza para dividir el resultado por 1000 y convertirlo de milisegundos a segundos.
    • Finalmente, la etapa $project se utiliza para mostrar el campo difference que contiene el resultado.

    Ten en cuenta que el resultado será un número decimal que representa la diferencia de tiempo en segundos.

Comments are closed.