Details
-
Improvement
-
Resolution: Unresolved
-
Major - P3
-
None
-
None
-
Query Optimization
Description
Currently the only way to know the element index in a $map is to create a "for loop" using $range:
{$map: {
|
input: {$range: [0, {$size: "$arr"}]}, |
as: "x", |
in: {index: "$x", value: {$arrayElemAt: ["$arr", "$$x"]}} |
A simpler and more understandable option would be to have a meta variable such as $$index which is automatically set to the current array index. If would have no impact on existing aggregation pipelines but would simplify situations where the array index is needed, changing the example above to:
{$map: {input "$arr", as "x", in: {index: "$$index", value "$$x"}}} |