Hi I have problem with not working lookup when I use _id from produkt. I store produkt id's in kategoria id_produktow array. I want to show kategoria nazwa and id_produktow as produkt nazwa. Kategoria:
[
{
"_id": "5fbbf3c9f3a7db3368a78f3c",
"nazwa": "Napoje",
"id_produktow": [
"5fbbf56cfb0d77336818500e",
"5fbbf56cfb0d77336818500f",
"5fbbf56cfb0d773368185010"
]
},
{
"_id": "5fbbf3c9f3a7db3368a78f3d",
"nazwa": "Słodycze",
"id_produktow": [
"5fbbf56cfb0d773368185011",
"5fbbf56cfb0d773368185012",
"5fbbf56cfb0d773368185013"
]
},
{
"_id": "5fbbf3c9f3a7db3368a78f3e",
"nazwa": "Pieczywo",
"id_produktow": [
"5fbbf56cfb0d773368185014",
"5fbbf56cfb0d773368185015",
"5fbbf56cfb0d773368185016"
]
}
]
Produkt:
[
{
"_id": "5fbbf56cfb0d77336818500e",
"nazwa": "Cola",
"cena": "3.99",
"opis": "Dwa litry popularnego napoju, którego nie może zabraknąc na Twoim stole."
},
{
"_id": "5fbbf56cfb0d77336818500f",
"nazwa": "Woda",
"cena": "1.99",
"opis": "Półtora litra nojpopularniejszego płynu na ziemi."
},
{
"_id": "5fbbf56cfb0d773368185010",
"nazwa": "Mleko",
"cena": "2.49",
"opis": "Pyszne mleko prosto od krowy."
},
{
"_id": "5fbbf56cfb0d773368185011",
"nazwa": "Żelki",
"cena": "2.99",
"opis": "Żelki z owocowym wypełnieniem."
},
{
"_id": "5fbbf56cfb0d773368185012",
"nazwa": "Cukierki",
"cena": "1.99",
"opis": "Cukierki z nadzieniem czekoladowym."
},
{
"_id": "5fbbf56cfb0d773368185013",
"nazwa": "Lizak",
"cena": "0.99",
"opis": "Lizak o smaku truskawkowym."
},
{
"_id": "5fbbf56cfb0d773368185014",
"nazwa": "Chleb",
"cena": "2.49",
"opis": "Świeży chleb z naturalnych składników."
},
{
"_id": "5fbbf56cfb0d773368185015",
"nazwa": "Bułka",
"cena": "0.49",
"opis": "Mięciutka bułka, gotowa być zjedzona na śniadanie."
},
{
"_id": "5fbbf56cfb0d773368185016",
"nazwa": "Bagietka",
"cena": "1.99",
"opis": "Długa bagietka dla smakoszy."
}
]
Query:
db.Kategoria.aggregate(
{
$lookup: {
from: 'Produkt',
localField: 'id_produktow',
foreignField: '_id',
as: 'string'
}}
)
Result:
[
{
_id: ObjectId("5fbbf3c9f3a7db3368a78f3c"),
nazwa: 'Napoje',
id_produktow: [
'5fbbf56cfb0d77336818500e',
'5fbbf56cfb0d77336818500f',
'5fbbf56cfb0d773368185010'
],
string: []
},
{
_id: ObjectId("5fbbf3c9f3a7db3368a78f3d"),
nazwa: 'Słodycze',
id_produktow: [
'5fbbf56cfb0d773368185011',
'5fbbf56cfb0d773368185012',
'5fbbf56cfb0d773368185013'
],
string: []
},
{
_id: ObjectId("5fbbf3c9f3a7db3368a78f3e"),
nazwa: 'Pieczywo',
id_produktow: [
'5fbbf56cfb0d773368185014',
'5fbbf56cfb0d773368185015',
'5fbbf56cfb0d773368185016'
],
string: []
}
]
Why there is no result? I tried to change id numbers for nazwa like Cola and it works, but I want to have id numbers. I searched and nothing works.Maybe there is some way to cast produkt _id to string when using db.Kategoria.aggregate then I think it should work.