Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
MongoDB: la consulta agregada no está pasando valor dentro de la función

Tengo un problema con la consulta de agregación de Mongoose. Tengo el siguiente esquema que es una matriz de objetos y contiene el valor endDate .

 [ { "id": 1, "endDate": "2022-02-28T19:00:00.000Z" }, { "id": 2, "endDate": "2022-02-24T19:00:00.000Z" }, { "id": 3, "endDate": "2022-02-25T19:00:00.000Z" } ]

Por lo tanto, durante el resultado de la agregación, tengo que agregar un nuevo nombre de campo isPast , contiene el valor booleano y realizar el cálculo para verificar si la fecha de endDate se pasó o no. Si ya se aprobó, isPast será true ; de lo contrario, será false .

Estoy usando la función isBefore de la biblioteca de momentos que devuelve el valor booleano. Pero dentro de esta función se enfrenta a un problema con respecto a pasar el valor de fecha de endDate . $endDate se transmite como una cadena, no como un valor.

¿Hay alguna forma de pasar el valor de endDate dentro de la función?

 const todayDate = moment(new Date()).format("YYYY-MM-DD"); db.collection.aggregate([ { $addFields: { "isPast": moment('$endDate', 'YYYY-MM-DD').isBefore(todayDate) }, }, ])
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedes lograrlo sin momentjs. Use $toDate para convertir la cadena de fecha y hora a la fecha

 db.collection.aggregate([ { $addFields: { "isPast": { $gt: [ new Date(), { $toDate: "$endDate" } ] } } } ])

Ejemplo de parque infantil de Mongo


Si solo desea comparar solo por fecha:

 db.collection.aggregate([ { $set: { "currentDate": "$$NOW", "endDate": { $toDate: "$endDate" } } }, { $addFields: { "isPast": { $gt: [ { "$dateFromParts": { "year": { $year: "$currentDate" }, "month": { $month: "$currentDate" }, "day": { "$dayOfMonth": "$currentDate" } } }, { "$dateFromParts": { "year": { $year: "$endDate" }, "month": { $month: "$endDate" }, "day": { "$dayOfMonth": "$endDate" } } } ] } } } ])

Ejemplo de Mongo Playground (comparar solo la fecha)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda