Hiện không có cách nào để thực hiện việc này trong giai đoạn $ project, nhưng bạn có thể sử dụng giai đoạn $ redact để xóa trường có điều kiện (tức là bạn đặt giá trị thành 0 giống như bạn đang làm trong ví dụ của mình.
db.collection.aggregate(
... matching and stuff ...
{$project: { _id: { $ifNull: [ "$user_id", 0 ] } }},
{$redact: {
{$cond: {
if: { $eq: [ "$user_id", 0 ] },
then: '$$PRUNE',
else: '$$DESCEND'
}}
}