Details
-
Improvement
-
Status: Backlog
-
Major - P3
-
Resolution: Unresolved
-
None
-
None
Description
Schema
x:\{type: String, required: true},
|
|
a: [{
|
|
_b: \{type: Schema.Types.ObjectId, ref: "B", required: true},
|
|
c: \{type: Number, required: true},
|
|
_d: \{type: Schema.Types.ObjectId, ref: "D", required: true},
|
|
e: {
|
|
f: \{type: Number, required: true}
|
|
}
|
|
}]
|
Lookup Stage
{
|
"$lookup": {
|
from: "B",
|
localField: "a._b",
|
foreignField: "_id",
|
as: "a._b"
|
}
|
}
|
Expected Output
{
|
x:/.../,
|
a:[{
|
_b:[Object],
|
c:/.../,
|
_d:/.../,
|
e:{
|
f:/.../
|
}
|
}]
|
}
|
Output
{
|
x:/.../,
|
a: {
|
|
_b: [Object]
|
|
}
|
}
|
As you can see above, fields inside the "a" gets overwritten by the $lookup operation, and the field called "a" turns into an object after the aggregation (just like in the behavior of the $unwind operator).
Attachments
Issue Links
- is duplicated by
-
SERVER-42307 $lookup overwrites the entire object and erases fields (other than what "as" holds) when used inside an array of nested objects
-
- Closed
-
- related to
-
SERVER-28717 $lookup does not expand 'localField' as expected when it is a dotted path representing fields within an array
-
- Closed
-