MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Incluir condicionalmente um campo (_id ou outro) na agregação do projeto mongodb?


Atualmente, não há uma maneira de fazer isso no estágio $project, mas você pode usar o estágio $redact para remover o campo condicionalmente (ou seja, você define o valor como 0 como está fazendo no seu exemplo.
db.collection.aggregate(
  ... matching and stuff ...
  {$project: { _id: { $ifNull: [ "$user_id", 0 ] } }},
  {$redact: {
  {$cond: {
    if: { $eq: [ "$user_id", 0 ] },
    then: '$$PRUNE',
    else: '$$DESCEND'
  }}
}