Hvis du bare filtrerer et element i et array, selvom kun et af elementet matcher, vil hele arrayet blive returneret, og intet vil blive returneret, hvis der ikke var nogen match. Derfor skal du adskille dit array i forskellige dokumenter ved hjælp af $unwind
operatør, og først efter det, prøv at filtrere resultaterne ved hjælp af $match
.
Følgende forespørgsel kan muligvis løse dit problem :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Arbejder mongoplayground
Hvis jeg må, bare et tip :Du bør gemme hvert produkt i et andet dokument, selvom MongoDB er skemaløst og tillader os at have næsten ethvert dokumentformat, så husk at hvert dokument skal indeholde det, der svarer til en række informationer i en almindelig relationsdatabase. Ellers vil du begynde at få disse problemer og desuden problemer med ydeevnen.