MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Matrice di filtri MongoDb

Se si filtra semplicemente un elemento in un array, anche se solo uno degli elementi corrisponde, verrà restituito l'intero array e non verrà restituito nulla se non ci sono corrispondenze. Pertanto, devi separare il tuo array in diversi documenti usando il $unwind operatore, e solo dopo, prova a filtrare i risultati usando $match .

La seguente query potrebbe risolvere il tuo problema :

db.collection.aggregate([
  {"$unwind": "$product"},
  {"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])

mongoplayground funzionante

Se posso permettermi, solo un consiglio :Dovresti archiviare ogni prodotto in un documento diverso, sebbene MongoDB sia privo di schemi e ci consenta di avere quasi tutti i formati di documento, ricorda che ogni documento dovrebbe contenere l'equivalente di una riga di informazioni in un normale database relazionale. In caso contrario, inizierai ad avere questi problemi e, in aggiunta, problemi di prestazioni.