MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Matriz de Filtro MongoDb


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.