MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Inclure conditionnellement un champ (_id ou autre) dans l'agrégation de projets mongodb ?

Il n'existe actuellement aucun moyen de le faire dans l'étape $project, mais vous pouvez utiliser l'étape $redact pour supprimer le champ de manière conditionnelle (c'est-à-dire que vous définissez la valeur sur 0 comme vous le faites dans votre exemple.

db.collection.aggregate(
  ... matching and stuff ...
  {$project: { _id: { $ifNull: [ "$user_id", 0 ] } }},
  {$redact: {
  {$cond: {
    if: { $eq: [ "$user_id", 0 ] },
    then: '$$PRUNE',
    else: '$$DESCEND'
  }}
}