Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

242
Visualizações
verifique una matriz de valor de cadena con una matriz de objeto en mongodb

Tengo una variedad de cadenas como esta

 let fromHour = ['2.5','3','3.5'] let toHour = ['2.5','3','3.5']

Tengo una matriz de objetos guardados en mongoDB

 timeRange = [ { from:'2.5', to:'3' }, { from:'3', to:'3.5' } ]

Quiero verificar si alguno de mi conjunto de valores de cadena existe en ese valor de objeto

He intentado esto pero me da este error (Expresión no reconocida '$match')

 checkAppoint = await Appointment.aggregate([ { $project: { date: myScheduleFinal[k].date, status: { $in: ['pending', 'on-going'] }, timeRange: { '$match': { 'from': { $in: fromHolder }, 'to': { $in: toHolder }, }, }, }, }, ]);

también he probado esta solución y funciona para mí, pero lleva mucho tiempo, así que estoy probando esto con agregado

 checkAppoint = await Appointment.findOne({ date: myScheduleFinal[k].date, status: { $in: ['pending', 'on-going'] }, timeRange:{$elemMatch:{ from:{$in:fromHolder}, to:{$in:toHolder} }} });

Así que alguien tiene una solución para eso

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Simplemente pruebe $elemMatch y $in ,

  • usando el método find()
 checkAppoint = await Appointment.find({ timeRange: { $elemMatch: { from: { $in: fromHour }, to: { $in: toHour } } } })

Patio de recreo


  • usando el método aggregate()
 checkAppoint = await Appointment.aggregate([ { $match: { timeRange: { $elemMatch: { from: { $in: fromHour }, to: { $in: toHour } } } } } ])

Patio de recreo

over 4 years ago · Santiago Trujillo Relatório

0

Así que encontré una forma de resolver este problema y compartiré la solución que usé.

Primero, quiero minimizar mi solicitud a mongodb, por lo que ahora estoy haciendo solo una solicitud que traiga todas las citas con la fecha requerida y quiero hacerlo de esta manera porque mi matriz fromHour y toHour cambiará muchas veces a través de una sola solicitud.

helperArray => contiene todo el día que quiero verificar su rango

 let checkAppoint = await Appointment.find({ date: { $in: helperArray }, status: { $in: ['pending', 'on-going'] }, });

ahora dentro de mi ciclo for revisaré esos datos

 checkAppoint.filter((singleAppoint) => { if (singleAppoint._doc.date === myScheduleFinal[k].date) { singleAppoint._doc.timeRange.map((singleTime) => { if (fromHolder.includes(singleTime.from)) { busy = true; } }); } });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda