use('test_FreePlanet'); let aggregation = [ { $match: { idapp: "13", }, }, { $sort: { date_updated: -1, }, }, { $lookup: { from: "users", let: { tab: 1, id: "$_id", }, pipeline: [ { $unwind: "$profile.favorite", }, { $match: { $expr: { $and: [ { $eq: [ "$profile.favorite.id", "$$id", ], }, { $eq: [ "$profile.favorite.tab", "$$tab", ], }, { $eq: [ "$idapp", "13", ], }, ], }, }, }, { $project: { username: 1, _id: 0 } }, ], as: "myfav", }, }, { $lookup: { from: "users", let: { tab: 1, id: "$_id", }, pipeline: [ { $unwind: "$profile.bookmark", }, { $match: { $expr: { $and: [ { $eq: [ "$profile.bookmark.id", "$$id", ], }, { $eq: [ "$profile.bookmark.tab", "$$tab", ], }, ], }, }, }, ], as: "mybook", }, }, { $addFields: { myId1: { $toObjectId: "$userId", }, }, }, { $lookup: { from: "users", localField: "myId1", foreignField: "_id", as: "user", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$user", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recSkill: 1, sector: 1, idSector: 1, idSkill: 1, myskill: 1, idStatusSkill: 1, idContribType: 1, "profile.username_telegram": 1, "profile.favorite": 1, "profile.bookmark": 1, idCity: 1, pub_to_share: 1, numLevel: 1, adType: 1, photos: 1, note: 1, website: 1, descr: 1, date_created: 1, date_updated: 1, userId: 1, username: 1, name: 1, surname: 1, lasttimeonline: 1, comune: 1, mycities: 1, "profile.img": 1, "profile.mygroups": 1, "profile.qualifica": 1, "profile.resid_province": 1, reported: 1, date_report: 1, username_who_report: 1, myfav: 1, mybook: 1, }, }, { $lookup: { from: "skills", localField: "idSkill", foreignField: "_id", as: "recSkill", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$recSkill", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recSkill: 1, sector: 1, idSector: 1, idSkill: 1, myskill: 1, idStatusSkill: 1, idContribType: 1, "profile.username_telegram": 1, "profile.favorite": 1, "profile.bookmark": 1, idCity: 1, pub_to_share: 1, numLevel: 1, adType: 1, photos: 1, note: 1, website: 1, descr: 1, date_created: 1, date_updated: 1, userId: 1, username: 1, name: 1, surname: 1, lasttimeonline: 1, comune: 1, mycities: 1, "profile.img": 1, "profile.mygroups": 1, "profile.qualifica": 1, "profile.resid_province": 1, reported: 1, date_report: 1, username_who_report: 1, myfav: 1, mybook: 1, }, }, { $lookup: { from: "sectors", localField: "idSector", foreignField: "_id", as: "sector", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$sector", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recSkill: 1, sector: 1, idSector: 1, idSkill: 1, myskill: 1, idStatusSkill: 1, idContribType: 1, "profile.username_telegram": 1, "profile.favorite": 1, "profile.bookmark": 1, idCity: 1, pub_to_share: 1, numLevel: 1, adType: 1, photos: 1, note: 1, website: 1, descr: 1, date_created: 1, date_updated: 1, userId: 1, username: 1, name: 1, surname: 1, lasttimeonline: 1, comune: 1, mycities: 1, "profile.img": 1, "profile.mygroups": 1, "profile.qualifica": 1, "profile.resid_province": 1, reported: 1, date_report: 1, username_who_report: 1, myfav: 1, mybook: 1, myseen: 1, }, }, { $lookup: { from: "cities", localField: "idCity", foreignField: "_id", as: "mycities", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mycities", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recSkill: 1, sector: 1, idSector: 1, idSkill: 1, myskill: 1, idStatusSkill: 1, idContribType: 1, "profile.username_telegram": 1, "profile.favorite": 1, "profile.bookmark": 1, idCity: 1, pub_to_share: 1, numLevel: 1, adType: 1, photos: 1, note: 1, website: 1, descr: 1, date_created: 1, date_updated: 1, userId: 1, username: 1, name: 1, surname: 1, lasttimeonline: 1, comune: 1, mycities: 1, "profile.img": 1, "profile.mygroups": 1, "profile.qualifica": 1, "profile.resid_province": 1, reported: 1, date_report: 1, username_who_report: 1, myfav: 1, mybook: 1, }, }, { $match: { $or: [ { $and: [ { "profile.mygroups": { $elemMatch: { groupname: { $in: [ "000017", "risoprova", "VillaggiamoItalia", "Terraw", "RisoBenevento", "111", "gruppodefaultriso", "pontiUmani", ], }, }, }, }, { pub_to_share: 1, }, ], }, { $or: [ { pub_to_share: { $exists: false, }, }, { pub_to_share: { $exists: true, $eq: 0, }, }, ], }, ], }, }, { $match: { $and: [ { "mycities.reg": "EMR", }, ], }, }, { $group: { _id: null, count: { $sum: 1, }, results: { $push: "$$ROOT", }, }, }, { $project: { count: 1, rows: { $slice: [ "$results", 0, 10, ], }, }, }, ]; db.myskills.aggregate(aggregation);