MongoDB select fields after $lookup
When there is a $lookup
stage to join a list of large documents, an error Total size of documents in ... matching ... exceeds maximum document size
can arrive.
It’s possible to avoid this with $unwind
stage right after $lookup
. More explanations in the documentation. And then the documents can be regrouped with the required fields.
Order.objects.aggregate(
{
'$lookup': {
'from': 'item',
'localField': '_id',
'foreignField': 'order_id',
'as': 'items'
}
},
{
"$unwind": "$items"
},
{
"$group": {
"_id": "$_id",
"date": {"$last": "$date"},
"items": {
"$push": {
"name": "$items.name",
"price": "$items.price"
}
}
}
}
)