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

493
Vistas
¿Cómo puedo devolver verdadero/falso si existe un elemento en un documento usando mongodb $ map?

Estoy ejecutando una función agregada a continuación. Un documento puede o no tener un elemento, y solo quiero devolver verdadero/falso. El elemento es enorme si existe, por lo que devolver el elemento completo crea muchos problemas y no es necesario.

Como introducción al problema, estoy en un entorno de producción en la versión 3.0.4 y actualizar a 3.4 no es una opción en este momento, aunque parece que esa versión tiene mejores soluciones.

Para probar esto, tengo un documento en una colección mycollection . El documento tiene un elemento exists que es un objeto que contiene otros elementos. No tiene un elemento llamado notexists

 db.runCommand({ "aggregate": "mycollection", "pipeline": [{ "$match": {...} }, { "$sort": {...} }, { "$group": {...} }, { "$limit": 10 }, { "$project": { "aggregated": { "$map": { "input": "$mycollection", "as": "document", "in": { "exists_test":{"$eq":["$$document.exists",null]}, "not_exists_test":{"$eq":["$$document.notexists",null]}, "exists_test_ifnull":{"$ifNull":["$$document.exists","test"]}, "not_exists_test_ifnull":{"$ifNull":["$$document.notexists","test"]}, "exists_content": "$$document.exists" ... } } }, "success": { "$cond": { "if": { "$gt": ["$status", 0] }, "then": "false", "else": "true" } } } }] })

Desafortunadamente, esto devuelve un documento:

 { aggregated: [{ "exists_test": false, (correct) "not_exists_test": false, (wrong) "exists_test_ifnull": content from document.exists, (correct) "not_exists_test_ifnull": "test", (correct) "exists_content": content from document.exists, (correct) }] }

Parece que "not_exists_test":{"$eq":["$$document.notexists",null]}, debería devolver verdadero, ya que $ifNull refleja con precisión que el valor es nulo.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Pruebe "not_exists_test": { "$gt": ["$$document.notexists", null] } , como se indica en el orden de comparación de tipos BSON .

over 4 years ago · Santiago Trujillo Denunciar

0

Para Mongodb 3.2, funciona con un solo signo $,

 "not_exists_test": { "$gt": ["$document.notexists", null] }
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