Mi esquema principal se ve así:
_id: id, random: random, cards: [objectId, objectId, ...] //ref to cardsex de tarjeta:
_id: id, random: random, random: random, clicks: 15.Me gustaría ordenar el esquema superior por la suma de clics dentro de las tarjetas.
consulta1
_id ) *si desea descender use sort -1 en lugar de 1
mainColl.aggregate( [{"$lookup": {"from": "cardCollection", "localField": "cards", "foreignField": "_id", "as": "clickSum"}}, {"$set": {"clickSum": {"$sum": "$clickSum.clicks"}}}, {"$sort": {"clickSum": 1}}])consulta2
mainColl.aggregate( [{"$lookup": {"from": "cardsCollection", "localField": "cards", "foreignField": "_id", "pipeline": [{"$group": {"_id": null, "clicksSum": {"$sum": "$clicks"}}}], "as": "clicksSum"}}, {"$set": {"clicksSum": {"$arrayElemAt": ["$clicksSum.clicksSum", 0]}}}, {"$sort": {"clickSum": 1}}])Terminé usando esto:
model.aggregate([ {$lookup: {from: "cards", localField: "cards", foreignField: "_id", as: "cards"}}, {$set: {clickSum: {$sum: "$cards.clicks"}}}, {$sort: {clickSum: -1}} ])