Si solo filtra un elemento en una matriz, incluso si solo uno de los elementos coincide, se devolverá la matriz completa y no se devolverá nada si no hubo ninguna coincidencia. Por lo tanto, debe separar su matriz en diferentes documentos usando $unwind
operador, y solo después, intente filtrar los resultados usando $match
.
La siguiente consulta podría resolver su problema :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Trabajando mongoplayground
Si me permite, solo un consejo :Debe almacenar cada producto en un documento diferente, aunque MongoDB no tiene esquemas y nos permite tener casi cualquier formato de documento, recuerde que cada documento debe contener el equivalente a una fila de información en una base de datos relacional normal. De lo contrario, comenzará a tener estos problemas y, además, problemas de rendimiento.