Hej,
Takie zadanie:
**Znajdź pracowników, którzy pracują przy ul. Strzeleckiej. Oprócz nazwiska podaj również nazwę zespołu, do którego pracownik należy. Uwaga! Nie używaj identyfikatora zespołu do przeprowadzenia selekcji. Nie używaj również numeru budynku.**
Mamy dwie kolekcje:
pracownicy
{id_prac:100, nazwisko:"WEGLARZ", etat:'DYREKTOR', zatrudniony: new Date("1968-01-01"), placa_pod:1730.00, placa_dod:420.50, id_zesp:10},
{id_prac:110, nazwisko:'BLAZEWICZ', etat:"PROFESOR",id_szefa:100, zatrudniony: new Date("1973-05-01"), placa_pod:1350.00, placa_dod:210.00, id_zesp:40},
{id_prac:120, nazwisko:'SLOWINSKI', etat:"PROFESOR",id_szefa:100, zatrudniony: new Date("1977-09-01"), placa_pod:1070.00, id_zesp:30},
{id_prac:130, nazwisko:'BRZEZINSKI', etat:"PROFESOR",id_szefa:100, zatrudniony: new Date("1968-07-01"), placa_pod:960.00, id_zesp:20},
{id_prac:140, nazwisko:'MORZY', etat:"PROFESOR",id_szefa:130, zatrudniony: new Date("1975-09-15"), placa_pod:830.00, placa_dod:105.00, id_zesp:20},
{id_prac:150, nazwisko:'KROLIKOWSKI', etat:'ADIUNKT',id_szefa:130, zatrudniony: new Date("1977-09-01"), placa_pod:645.50, id_zesp:20},
{id_prac:160, nazwisko:'KOSZLAJDA', etat:'ADIUNKT', id_szefa:130, zatrudniony: new Date("1985-03-01"), placa_pod:590.00, id_zesp:20},
{id_prac:170, nazwisko:'JEZIERSKI', etat:'ASYSTENT', id_szefa:130, zatrudniony: new Date("1992-10-01"), placa_pod:439.70, placa_dod:80.50, id_zesp:20},
{id_prac:190, nazwisko:'MATYSIAK', etat:'ASYSTENT', id_szefa:140, zatrudniony: new Date("1993-09-01"), placa_pod:371.00, id_zesp:20},
{id_prac:180, nazwisko:'MAREK', etat:'SEKRETARKA', id_szefa:100, zatrudniony: new Date("1985-02-20"), placa_pod:410.20, id_zesp:10},
{id_prac:200, nazwisko:'ZAKRZEWICZ', etat:'STAZYSTA', id_szefa:140, zatrudniony: new Date("1994-07-15"), placa_pod:208.00, id_zesp:30},
{id_prac:210, nazwisko:'BIALY', etat:'STAZYSTA', id_szefa:130, zatrudniony: new Date("1993-10-15"), placa_pod:250.00, placa_dod:170.60, id_zesp:30},
{id_prac:220, nazwisko:'KONOPKA', etat:'ASYSTENT', id_szefa:110, zatrudniony: new Date("1993-10-01"), placa_pod:480.00, id_zesp:20},
{id_prac:230, nazwisko:'HAPKE', etat:'ASYSTENT', id_szefa:120, zatrudniony: new Date("1992-09-01"), placa_pod:480.00, placa_dod:90.00, id_zesp:30}
])
zespoly
{"id_zesp":10,"nazwa":"ADMINISTRACJA","adres":"PIOTROWO 3A"},
{"id_zesp":20,"nazwa":"SYSTEMY ROZPROSZONE","adres":"PIOTROWO 3A"},
{"id_zesp":30,"nazwa":"SYSTEMY EKSPERCKIE","adres":"STRZELECKA 14"},
{"id_zesp":40,"nazwa":"ALGORYTMY","adres":"WLODKOWICA 16"},
{"id_zesp":50,"nazwa":"BADANIA OPERACYJNE","adres":"MIELZYNSKIEGO 30"}
])
Mam zapytanie, które wyświetli wymagane informacje. Ale na podstawie czego napisać match by nie uzywac ID zespolu ani adres do wybrania pracownikow ze Strzeleckiej?
db.pracownicy.aggregate(
[{$lookup:{from: "zespoly", localField: "id_zesp", foreignField: "id_zesp", as: "dept"}},
{$project:{
"_id":0,
"nazwisko":"$nazwisko",
"etat":"$etat",
"zespol":{$arrayElemAt:["$dept.nazwa",0]},
"dept": {$arrayElemAt:["$dept.adres",0]}}}
])
Testowanie kodu ewentualnie tutaj: https://www.mplay.run/mongodb-online-terminal