433 lines
7.6 KiB
Plaintext
433 lines
7.6 KiB
Plaintext
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);
|
|
|