// MongoDB Playground // To disable this template go to Settings | MongoDB | Use Default Template For Playground. // Make sure you are connected to enable completions and to be able to run a playground. // Use Ctrl+Space inside a snippet or a string literal to trigger completions. // Select the database to use. use('test_FreePlanet'); let aggregation = [ { $match: { idapp: "13", }, }, { $sort: { date_updated: -1, }, }, { $addFields: { myId1: { $toObjectId: "$userId", }, }, }, { $lookup: { from: "users", localField: "myId1", foreignField: "_id", as: "user", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$user", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recGood: 1, sectorGood: 1, idSectorGood: 1, idGood: 1, mygood: 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, "profile.resid_card": 1, reported: 1, date_report: 1, username_who_report: 1, }, }, { $lookup: { from: "goods", localField: "idGood", foreignField: "_id", as: "recGood", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$recGood", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recGood: 1, sectorGood: 1, idSectorGood: 1, idGood: 1, mygood: 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, "profile.resid_card": 1, reported: 1, date_report: 1, username_who_report: 1, }, }, { $lookup: { from: "sectorgoods", localField: "idSectorGood", foreignField: "_id", as: "sectorGood", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$sectorGood", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recGood: 1, sectorGood: 1, idSectorGood: 1, idGood: 1, mygood: 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, }, }, { $lookup: { from: "cities", localField: "idCity", foreignField: "_id", as: "mycities", }, }, { $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mycities", 0, ], }, "$$ROOT", ], }, }, }, { $project: { recGood: 1, sectorGood: 1, idSectorGood: 1, idGood: 1, mygood: 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, }, }, { $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);