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

321
Visualizações
Comprobar la presencia de un campo con una ruta en un `$expr`

En una expresión ( $expr ), y solo en una expresión, quiero verificar la presencia de un campo con una ruta de navegación .

 db.haystack.aggregate( [ { '$match': { '$expr': { 'abc': { '$ne': null } }, }, }, ], );

Pero recibo un error FieldPath field names may not contain '.'

¿Cómo se puede verificar la presencia de un campo en un $expr ? Si alguna parte de las rutas no está presente, quiero rechazar el documento.

 { a: 1 } // False { a: { b: 1 } } // False { a: { b: { c: 1 } } // True
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Tiene dos problemas en su código, primero porque requiere el uso de $expr , comprendamos cuál es $expr's :

Los argumentos pueden ser cualquier expresión de agregación válida. Para obtener más información, consulte Expresiones.

Entonces $expr recibe una "expresión de agregación" que es:

Las expresiones pueden incluir rutas de campo, literales, variables del sistema, objetos de expresión y operadores de expresión. Las expresiones se pueden anidar.

Entonces, la entrada actual de {"abc":{"$ne":null}} no es ninguna de estas, en este caso, desea usar el formulario de agregación $ne, que es:

{ $ne: [ ... args ... ] }

Ahora viene el segundo problema, espera este comportamiento de consulta especial en el que se consulta un null que coincide con valores nulos y campos faltantes al mismo tiempo. Sin embargo, esto no existe para el marco de agregación, solo el lenguaje de consulta.

Hay muchas formas posibles de evitar esto, pero aquí hay una solución usando $type

 db.collection.aggregate([ { "$match": { "$expr": { $ne: [ { $type: "$abc" }, "missing" ] } } }, ])

Parque infantil Mongo

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