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

262
Vistas
Mongodb, verifique si mi rango de consulta no se superpone a una lista de rangos de fechas en mongodb

tengo los siguientes datos:

 const Availabilities = new Schema({ id: Number, reservations: [{ from: Date, to: Date }] }); const Availability = mongoose.model('Availability', Availabilities);

Básicamente, quiero obtener una lista de productos en los que las fechas no se superpongan con la consulta.

 [ { id: 1, reservations: [ { from: '2022-01-01', to: '2022-03-31', }, { from: '2022-04-01', to: '2022-06-01', }, ], }, { id: 2, reservations: [ { from: '2022-01-01', to: '2022-12-31', }, ], }, { id: 3, reservations: [ { from: '2022-02-01', to: '2022-06-30', }, ], }, ]

y quiero filtrar todos los que no están en un rango específico. Ejemplo:

 query = { from: "2022-07-01", to: "2022-08-31" }

debería volver

 [ { id: 1, reservations: [ { from: '2022-01-01', to: '2022-03-31', }, { from: '2022-04-01', to: '2022-06-01', }, ], }, { id: 3, reservations: [ { from: '2022-02-01', to: '2022-06-30', }, ], }, ]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Simplemente puede verificar si se cumple una de las dos condiciones, ya sea:

  1. to es más pequeño que el inicio de su entrada (lo que significa que la sesión terminó antes)
  2. from es más grande que el final de su entrada (es decir, la sesión comenzó después)

Así es como se verá en el código:

 db.collection.aggregate([ { $match: { reservations: { $elemMatch: { $or: [ { to: { $lt: "2022-07-01" }, }, { from: { $gt: "2022-08-31" } } ] } } } }, { $addFields: { reservations: { $filter: { input: "$reservations", cond: { $or: [ { $lt: [ "$$this.to", "2022-07-01" ] }, { $gt: [ "$$this.to", "2022-08-31" ] } ] } } } } } ])

Parque infantil Mongo

about 4 years ago · Juan Pablo Isaza 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