Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

319
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!