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

211
Vistas
Usar campo de matriz en $cond

Estoy tratando de establecer un valor en mi tubería de agregación en función de si algún objeto en una matriz tiene un valor específico establecido en verdadero.

 { $set: { "read": {$cond: {if: {"permissions.publicRead": true}, then: true, else: false}}, "write": false, "owner": false } }

Pero se queja de no permitir un "." en el nombre del campo. Los datos se ven algo como esto:

 { "permissions": [ {"publicRead": true}, {"publicRead": false} ] }

Editar: también intenté usar $permissions.publicRead y {if: "permissions.publicRead", then: true, else: false}

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

0

Motivo del error: $cond requiere verificar la condición en el operador $eq y necesita pasar $ antes $permissions.publicRead en condición,

 $cond: { if: { $eq: ["$permissions.publicRead", true] }, then: true, else: false }

Después de resolver el problema anterior, la consulta funcionará sin errores, pero no devolverá el resultado correcto porque permissions.publicRead siempre devolverá una matriz de valores booleanos,

$eq: ["$permissions.publicRead", true]

es igual a

$eq: [[true, false], true] o $eq: [[false, true], true]

asi que

[true, false] o [false, true] no es igual a true


Pruebe el operador $anyElementTrue para verificar si la matriz tiene algún valor verdadero o no,

 db.collection.aggregate([ { $set: { "read": { $anyElementTrue: "$permissions.publicRead" }, "write": false, "owner": false } } ])

Patio de recreo

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