-
Type: Improvement
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Querying
-
Fully Compatible
This appeared in SERVER-15013:
It is ambiguous whether "0" refers to a nested field name or to a position in the array. For instance, what should the following projection return?
t.insert({a: [{"0": "foo", "bar": "baz"}, {"a": "b"}]}); t.find({}, {"a.0": 1});One answer is that "0" should be interpreted as an array position, meaning that we should project just the first array element. The transformed document would then be:
{a: [ {"0": "foo", "bar": "baz"} ]}Another answer is that "0" should be interpreted just like any other field name, and should be used to project within each nested document. Under this interpretation, the result is:
{ "a" : [ { "0" : "foo" }, { } ] }Our projection language chooses the latter interpretation.
- duplicates
-
SERVER-6074 Allow $slice operator in $project
- Closed
- related to
-
SERVER-15013 Projection of field in a concrete array element (dot notation) returns element as empty object
- Closed