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

67
Visualizações
Cómo encontrar documentos cuyos datos coincidan con una condición en al menos un elemento de una matriz dada de elementos - mongoDB

Quiero obtener registros que existen en la matriz de fechas proporcionada.

Esta matriz de fechas proporcionada obtendrá registros entre la fecha de inicio y finalización.

Ejemplo:

tengo este esquema:

 [ { "_id": "1", "course": "Maths", "startDate": "2022-06-07", "endDate": "2022-06-12" }, { "_id": "2", "course": "Chemistry", "startDate": "2022-06-06", "endDate": "2022-06-09" }, { "_id": "3", "course": "Physics", "startDate": "2022-06-08", "endDate": "2022-06-10" }, { "_id": "4", "course": "Computer Science", "startDate": "2022-06-10", "endDate": "2022-06-18" }, { "_id": "5", "course": "Computer Science", "startDate": "2022-06-10", "endDate": "2022-06-13" }, { "_id": "6", "course": "Biology", "startDate": "2022-06-08", "endDate": "2022-06-10" } ]

Matriz proporcionada:

 ["2022-06-06", "2022-06-17"]

La respuesta esperada es:

 [ { "_id": "2", "course": "Chemistry", "startDate": "2022-06-06", "endDate": "2022-06-09" }, { "_id": "4", "course": "Computer Science", "startDate": "2022-06-10", "endDate": "2022-06-18" } ]

¿Alguien puede ayudarme con la consulta? Gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede usar una canalización de agregación con $filter :

  1. Agregue la matriz de fechas a los documentos.
  2. Agregue un campo de fechas matchingDates que cuente los elementos en la matriz de dates que coincidan con la condición.
  3. $match solo con documentos que tengan dichos elementos.
  4. Formato
 db.collection.aggregate([ {$addFields: {dates: ["2022-06-06", "2022-06-17"]}}, { $set: { matchingDates: { $size: { $filter: { input: "$dates", as: "item", cond: { $and: [ {$gte: [{$toDate: "$$item"}, {$toDate: "$startDate"}]}, {$lte: [{$toDate: "$$item"}, {$toDate: "$endDate"}]} ] } } } } } }, {$match: {matchingDates: {$gt: 0}}}, {$unset: ["dates", "matchingDates"]} ])

Ejemplo de patio de recreo

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