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

210
Visualizações
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 Respostas
Responde à pergunta

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