-
Type: Improvement
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
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 } } }
- depends on
-
SERVER-12573 Extend $ifNull to accept more than two arguments was Add $any/$first/$oneOf operator to projection
- Closed