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

789
Visualizações
Agregación de MongoDB: $ regexMatch en el campo de matriz

Estoy usando el operador $regexMatch de Mongo para buscar documentos en los que al menos parte de un campo coincida con el patrón, y esto funciona bien para los campos de nivel raíz. Pero, ¿cómo lo uso con campos de matriz? Quiero devolver una coincidencia si al menos uno de los elementos de la matriz coincide con el patrón.

Por ejemplo, digamos que la colección tiene estos dos documentos:

 { "_id": ObjectId("5ff6335c1570ba63ca5ac21e"), "requirements": [ { "description": "Bachelor of Science required for this blah blah blah", "code": "ABC" }, { "description": "Also much experience in JavaScript blah", "code": "XYZ" } ] }, { "_id": ObjectId("5ff6335b1570ba63ca5abefb"), "requirements": [ { "description": "Master of Arts WANTED NOW!", "code": "TTT" }, { "description": "5+ experience required in C++", "code": "QQQ" } ] }

y algo como este oleoducto

 db.Collection.aggregate([ { $match: { $expr: { $regexMatch: { input: '$requirements.description', regex: /^.*?\bblah blah blah\b.*?$/im } } } } ])

debe devolver solo el primer documento, ya que su primer elemento dentro de los requirements coincide con la description que contiene "bla, bla, bla" ("Se requiere una licenciatura en ciencias para este bla, bla, bla").

Sin embargo, esto solo me arroja un error que dice '$regexMatch necesita que input sea del tipo cadena'. Y reemplazarlo con $requirements[0].description tampoco funciona.

Entonces, ¿hay alguna manera de hacer coincidir los campos de matriz de expresiones regulares en Mongo?

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

0

$regexMatch solo permite requirements de entrada de cadena que tienen una matriz Requiere iterar valores de matriz de bucle,

  • $reduce para iterar el bucle de description , verificar la condición si la expresión coincide y luego devolver el puntaje; de lo contrario, devolver el valor inicial
 db.collection.aggregate([ { $addFields: { score: { $reduce: { input: "$requirements.description", initialValue: 0, in: { $cond: [ { $eq: [ { $regexMatch: { input: "$$this", regex: "blah blah blah" } }, true ] }, 50, "$$value" ] } } } } } ])

Patio de recreo


Si desea filtrar documentos, simplemente intente $regex en la etapa $match ,

 db.collection.aggregate([ { $match: { "requirements.description": { $regex: "blah blah blah" } } } ])

Patio de recreo

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