sql >> Databáze >  >> NoSQL >> MongoDB

Pole filtrů MongoDb

Pokud pouze filtrujete prvek v poli, i když se shoduje pouze jeden z prvků, bude vráceno celé pole a pokud žádná shoda nenastane, nebude vráceno nic. Proto musíte pole rozdělit do různých dokumentů pomocí $unwind a teprve po něm zkuste výsledky filtrovat pomocí $match .

Následující dotaz by mohl vyřešit váš problém :

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

Funguje mongoplayground

Pokud mohu, jen tip :Každý produkt byste měli uložit do jiného dokumentu, ačkoli MongoDB je bez schématu a umožňuje nám mít téměř jakýkoli formát dokumentu, nezapomeňte, že každý dokument by měl obsahovat ekvivalent jednoho řádku informací v běžné relační databázi. V opačném případě začnete mít tyto problémy a navíc problémy s výkonem.



  1. Instalace MongoDB na CentOS 7

  2. Úvod do HDFS Federation &Architecture

  3. Tečkový zápis vs. $elemMatch

  4. Nelze se připojit k mongodb Chyba:nelze se připojit k serveru 127.0.0.1:27017 na adrese src/mongo/shell/mongo.js:L112