Se você apenas filtrar um elemento em uma matriz, mesmo que apenas um dos elementos corresponda, a matriz inteira será retornada e nada será retornado se não houver correspondência. Portanto, você precisa separar seu array em diferentes documentos usando o
$unwind
operador, e somente depois dele, tente filtrar os resultados usando $match
. A consulta a seguir pode resolver seu problema :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Trabalhando mongoplayground
Se me permite, apenas uma dica :Você deve armazenar cada produto em um documento diferente, embora o MongoDB não tenha esquemas e nos permita ter praticamente qualquer formato de documento, lembre-se de que cada documento deve conter o equivalente a uma linha de informações em um banco de dados relacional regular. Caso contrário, você começará a ter esses problemas e, além disso, problemas de desempenho.