MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ein Feld (_id oder andere) bedingt in die Mongodb-Projektaggregation aufnehmen?

Derzeit gibt es keine Möglichkeit, dies innerhalb der $project-Phase zu tun, aber Sie können die $redact-Phase verwenden, um das Feld bedingt zu entfernen (d. h. Sie setzen den Wert auf 0, wie Sie es in Ihrem Beispiel tun.

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