[CSHARP-3282] Extend $ifNull to accept more than two arguments Created: 07/Dec/20  Updated: 27/May/22  Resolved: 14/Dec/20

Status: Closed
Project: C# Driver
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Backlog - Core Eng Program Management Team Assignee: Unassigned
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-12573 Extend $ifNull to accept more than tw... Closed
Server Compat: 4.9

 Description   
Downstream Change Summary

Previously, $ifNull only supported 2 arguments. Now, $ifNull accepts 2+ arguments and returns the first that is not null (and not undefined or missing). If all arguments are null/undefined/missing, the last argument is returned.

Description of Linked Ticket

This could be described as $ifNull expression that accepts multiple arguments (rather than current two only). First non-null expression would be used.

Original description:

It would be great if instead of making a long list of conditionals you could use any $any operator to get the first of the fields that exists.

Ex:

var docs = [
  { 'a': true },
  { 'b': true },
  { 'a': true}
  ...
]

{ '$project':
  { 'wow':
    { '$any': [ '$a', '$b', '$b.nested', ... ] }
  }
}

This would make it easy to project an _id for use by a $group stage in situations where you have varied document schema.

For example, the next stage of the pipeline could be:

{ $group: 
  { 
    _id: { wow: '$wow' },
    count: { '$sum': 1 }
  }
}



 Comments   
Comment by Esha Bhargava [ 14/Dec/20 ]

The driver does not have builder support for $ifNull

Generated at Wed Feb 07 21:44:53 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.