MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Филтърен масив MongoDb

Ако просто филтрирате елемент в масив, дори само един от елементите да съвпада, ще бъде върнат целият масив и нищо няма да бъде върнато, ако няма съвпадение. Следователно трябва да разделите масива си на различни документи с помощта на $unwind оператор и едва след него опитайте да филтрирате резултатите с $match .

Следната заявка може да реши проблема ви :

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

Работещ mongoplayground

Ако мога, само един съвет :Трябва да съхранявате всеки продукт в различен документ, въпреки че MongoDB е без схема и ни позволява да имаме почти всеки формат на документ, не забравяйте, че всеки документ трябва да съдържа еквивалента на един ред информация в обикновена релационна база данни. В противен случай ще започнете да имате тези проблеми и освен това проблеми с производителността.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Удостоверяване с Spring Security и MongoDB

  2. Различни индекси на различни членове на набор от реплики

  3. не може да се намери bean за MongoRepository (Spring Boot)

  4. pymongo + gevent:хвърли ми банан и просто monkey_patch?

  5. MongoDB - Java | Как да управлявате връзката