Si vous filtrez simplement un élément dans un tableau, même si un seul des éléments correspond, le tableau entier sera renvoyé et rien ne sera renvoyé s'il n'y avait pas de correspondance. Par conséquent, vous devez séparer votre tableau en différents documents en utilisant le $unwind
opérateur, et seulement après, essayez de filtrer les résultats en utilisant $match
.
La requête suivante peut résoudre votre problème :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Travailler mongoplayground
Si je peux me permettre, juste un conseil :Vous devez stocker chaque produit dans un document différent, bien que MongoDB soit sans schéma et nous permette d'avoir presque n'importe quel format de document, rappelez-vous que chaque document doit contenir l'équivalent d'une ligne d'informations dans une base de données relationnelle régulière. Sinon, vous commencerez à avoir ces problèmes, ainsi que des problèmes de performances.