sql >> Database >  >> NoSQL >> MongoDB

MongoDb-filterarray

Als u alleen een element in een array filtert, zelfs als slechts één van de elementen overeenkomt, wordt de hele array geretourneerd en wordt er niets geretourneerd als er geen overeenkomst was. Daarom moet u uw array in verschillende documenten scheiden met behulp van de $unwind operator, en pas daarna, probeer de resultaten te filteren met $match .

De volgende vraag zou uw probleem kunnen oplossen :

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

Werkende mongoplayground

Als ik mag, slechts een tip :U moet elk product in een ander document opslaan, hoewel MongoDB schemaloos is en ons in staat stelt om bijna elk documentformaat te hebben, onthoud dat elk document het equivalent moet bevatten van één rij informatie in een gewone relationele database. Anders krijg je deze problemen en bovendien prestatieproblemen.



  1. Mongodump krijgt lege mappen

  2. MongoDB Gegevensmap /data/db niet gevonden

  3. Match voorwaarden en laatste datum van array

  4. Secundair naar primair promoveren van secundair knooppunt