Tengo una colección de mongo y cada documento de esa colección tiene una cadena de fecha en el siguiente formato: {"etd": "15-Mar-21"} Quiero consultar y recuperar solo aquellos ...

1
Anuj Panchal 15 mar. 2021 a las 06:32

1 respuesta

La mejor respuesta

Use la agregación para agregar primero un campo a todos los documentos con la fecha de conversión usando la directiva $dateFromString.

{
    $addFields: {
      date: {
        $dateFromString: {
          dateString: "$etd"
        }
      }
    }
  }

Lo anterior agregará un campo date a cada documento (solo durante la duración de la consulta) que almacenará los objetos de fecha que corresponden a su representación de cadena. Entonces "15-Mar-21" se convertirá en ISODate("2021-03-15T00:00:00Z")

Y luego use $match para hacer coincidir todos los documentos donde date es mayor que una fecha determinada. Así que aquí está la agregación completa:

db.collection.aggregate([
  {
    $addFields: {
      date: {
        $dateFromString: {
          dateString: "$etd"
        }
      }
    }
  },
  {
    $match: {
      date: {
        $gt: ISODate("2021-03-15T00:00:00Z")
      }
    }
  }
])

Zona de juegos: https://mongoplayground.net/p/LSHcukh05jk

0
codemonkey 15 mar. 2021 a las 03:45