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.

Consulta de MongoDB v5.0.5 utilizando solo la hora

Primera ocasión experimentando con fechas y horas en MongoDB.

Actualmente, he insertado correctamente fechas UTC en mis documentos:

{
    "Value": 10,
    "DateTime": {
        "$date": "2013-08-23T08:00:00.000Z"
    }
}

Quiero consultar los datos para devolver todos los campos ‘value’ y ‘datetime’ de todos los documentos en los que la hora sea 08. He llegado hasta aquí:

db.readings.aggregate([
    {$project:{hour:{$hour:"$DateTime"}}},
    {$match:{hour:{"$in":[8]}}}
])

Esto devuelve el _id y "hour": 8 para todas las entradas coincidentes, pero estoy confundido sobre cómo proceder. Parece una forma innecesariamente complicada de buscar, así que me pregunto si estoy enfocando mal aquí. Reconozco que estoy un poco fuera de mi zona de confort, por lo que agradecería un poco de orientación.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en MongoDB, aquí está mi sugerencia sobre cómo proceder con su consulta:

    Dado que ya ha obtenido la variable $hour del campo DateTime para cada documento, puede utilizar el operador $project para incluir tanto los campos Value como DateTime en la salida. Así es como se vería la consulta actualizada:

    db.readings.aggregate([
      {
        $project: {
          hour: { $hour: "$DateTime" },
          Value: 1,
          DateTime: 1
        }
      },
      {
        $match: {
          hour: { $eq: 8 }
        }
      }
    ])
    

    Esta consulta devolverá todos los documentos donde la hora en el campo DateTime sea 8, y para cada documento coincidente, incluirá los campos Value y DateTime. ¡Espero que esto ayude!

Comments are closed.