Ако просто филтрирате елемент в масив, дори само един от елементите да съвпада, ще бъде върнат целият масив и нищо няма да бъде върнато, ако няма съвпадение. Следователно трябва да разделите масива си на различни документи с помощта на $unwind
оператор и едва след него опитайте да филтрирате резултатите с $match
.
Следната заявка може да реши проблема ви :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Работещ mongoplayground
Ако мога, само един съвет :Трябва да съхранявате всеки продукт в различен документ, въпреки че MongoDB е без схема и ни позволява да имаме почти всеки формат на документ, не забравяйте, че всеки документ трябва да съдържа еквивалента на един ред информация в обикновена релационна база данни. В противен случай ще започнете да имате тези проблеми и освен това проблеми с производителността.