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

325
Vistas
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 Respuestas
Responde la pregunta

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 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