Files
freeplanet_serverside/mongodb/TabellaMovimenti.mongodb

571 lines
9.5 KiB
Plaintext

use('test_FreePlanet');
let orig =
[
{
$match: {
idapp: "13",
"profile.mycircuits": {
$elemMatch: {
circuitname: {
$eq: "RISO Test",
},
},
},
},
},
{
$lookup: {
from: "circuits",
as: "circuit",
let: {
circuitname: "RISO Test",
idapp: "$idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$name",
"$$circuitname",
],
},
{
$eq: [
"$idapp",
"$$idapp",
],
},
],
},
},
},
],
},
},
{
$unwind: "$circuit",
},
{
$project: {
username: 1,
profile: 1,
idapp: 1,
"circuit.name": 1,
"circuit._id": 1,
},
},
{
$lookup: {
from: "accounts",
as: "account",
let: {
username: "$username",
idapp: "$idapp",
circuitId: "$circuit._id",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
{
$eq: [
"$$circuitId",
"$circuitId",
],
},
],
},
},
},
],
},
},
{
$unwind: "$account",
},
{
$sort: {
transactionDate: -1,
},
},
{
$match: {
idapp: "13",
$or: [
{
accountFromId: "632b300002f403d67895d79c",
},
{
accountToId: "632b300002f403d67895d79c",
},
],
},
},
{
$lookup: {
from: "accounts",
localField: "accountFromId",
foreignField: "_id",
as: "accfrom",
},
},
{
$unwind: "$accfrom",
},
{
$lookup: {
from: "users",
let: {
username: "$accfrom.username",
idapp: "$accfrom.idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
],
},
},
},
],
as: "userfrom",
},
},
{
$unwind: "$userfrom",
},
{
$lookup: {
from: "accounts",
localField: "accountToId",
foreignField: "_id",
as: "accto",
},
},
{
$unwind: "$accto",
},
{
$lookup: {
from: "circuits",
localField: "accfrom.circuitId",
foreignField: "_id",
as: "circuitfrom",
},
},
{
$unwind: "$circuitfrom",
},
{
$lookup: {
from: "circuits",
localField: "accto.circuitId",
foreignField: "_id",
as: "circuitto",
},
},
{
$unwind: "$circuitto",
},
{
$lookup: {
from: "users",
let: {
username: "$accto.username",
idapp: "$accto.idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
],
},
},
},
],
as: "userto",
},
},
{
$unwind: "$userto",
},
{
$project: {
transactionDate: 1,
amount: 1,
causal: 1,
notifId: 1,
"circuitfrom.symbol": 1,
"circuitto.symbol": 1,
"userfrom.username": 1,
"userfrom.profile.img": 1,
"userto.username": 1,
"userto.profile.img": 1,
},
},
{
$group: {
_id: null,
count: {
$sum: 1,
},
results: {
$push: "$$ROOT",
},
},
},
{
$project: {
count: 1,
rows: {
$slice: [
"$results",
-20,
20,
],
},
},
},
];
let passo1 =
[
{
$match: {
idapp: "13",
"profile.mycircuits": {
$elemMatch: {
circuitname: {
$eq: "RISO Test",
},
},
},
},
},
{
$lookup: {
from: "circuits",
as: "circuit",
let: {
circuitname: "RISO Test",
idapp: "$idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$name",
"$$circuitname",
],
},
{
$eq: [
"$idapp",
"$$idapp",
],
},
],
},
},
},
],
},
},
{
$unwind: "$circuit",
},
{
$project: {
username: 1,
profile: 1,
idapp: 1,
"circuit.name": 1,
"circuit._id": 1,
},
},
{
$lookup: {
from: "accounts",
as: "account",
let: {
username: "$username",
idapp: "$idapp",
circuitId: "$circuit._id",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
{
$eq: [
"$$circuitId",
"$circuitId",
],
},
],
},
},
},
],
},
},
{
$unwind: "$account",
},
]
let passo2 = [
{
$sort: {
transactionDate: -1,
},
},
{
$match: {
idapp: "13",
$or: [
{
accountFromId: "632b300002f403d67895d79c",
},
{
accountToId: "632b300002f403d67895d79c",
},
],
},
},
{
$lookup: {
from: "accounts",
localField: "accountFromId",
foreignField: "_id",
as: "accfrom",
},
},
{
$unwind: "$accfrom",
},
{
$lookup: {
from: "users",
let: {
username: "$accfrom.username",
idapp: "$accfrom.idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
],
},
},
},
],
as: "userfrom",
},
},
{
$unwind: "$userfrom",
},
{
$lookup: {
from: "accounts",
localField: "accountToId",
foreignField: "_id",
as: "accto",
},
},
{
$unwind: "$accto",
},
{
$lookup: {
from: "circuits",
localField: "accfrom.circuitId",
foreignField: "_id",
as: "circuitfrom",
},
},
{
$unwind: "$circuitfrom",
},
{
$lookup: {
from: "circuits",
localField: "accto.circuitId",
foreignField: "_id",
as: "circuitto",
},
},
{
$unwind: "$circuitto",
},
{
$lookup: {
from: "users",
let: {
username: "$accto.username",
idapp: "$accto.idapp",
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$username",
"$username",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
],
},
},
},
],
as: "userto",
},
},
{
$unwind: "$userto",
},
{
$project: {
transactionDate: 1,
amount: 1,
causal: 1,
notifId: 1,
"circuitfrom.symbol": 1,
"circuitto.symbol": 1,
"userfrom.username": 1,
"userfrom.profile.img": 1,
"userto.username": 1,
"userto.profile.img": 1,
},
},
{
$group: {
_id: null,
count: {
$sum: 1,
},
results: {
$push: "$$ROOT",
},
},
},
{
$project: {
count: 1,
rows: {
$slice: [
"$results",
-20,
20,
],
},
},
},
]
;
let passo2b = [
];
let passo3 = [
];
let aggregation = [];
let test = false;
if (test) {
aggregation = [...aggregation, ...passo4];
} else {
// aggregation = [...aggregation, ...passo1];
aggregation = [...aggregation, ...passo2];
aggregation = [...aggregation, ...passo2b];
aggregation = [...aggregation, ...passo3];
}
db.movements.aggregate(aggregation);