MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB/JS - Zaawansowane wyszukiwanie aspektowe - Jak uzyskać tylko odpowiednie kategorie/wartości

Na samym początku możesz utworzyć 2 kategorie w następujący sposób

Category
- _id
- category

Products
_ _id (the product _id )
- category (use the _id from Category)
- subcategory (use string, or if you want, create a subcategory collection)
- name
- attributes (color, model)

Gdy chcesz znaleźć wszystkie kategorie

db.category.find()

Jeśli chcesz znaleźć wszystkie produkty w kategorii, użyj identyfikatora kategorii

db.products.find({ cateogry: _id})

Kiedy musisz znaleźć wszystkie produkty w kategorii ORAZ podkategorii

db.products.find({ category: _id, subcategory: 'salon' }) //or subcategory_id

Kiedy potrzebujesz znaleźć pojedynczy produkt

db.products.findOne({ _id }) //with the product_id

Gdy chcesz znaleźć produkt według nazwy

db.products.find({ name: { $regex : 'some search term', $option: 'i' } }) // where search term can be part of the product name

Gdy chcesz znaleźć wszystkie kategorie zawierające BMW

db.products.aggregate([
    {
       $match: { "attributes.model": "BMW"
     },
     {
        $group: { _id: "$category" }
      }
])

Po rozpoczęciu tworzenia bazy danych przechodzisz do tworzenia widoków dla swojej bazy danych z agregacją, a także javascript. (że możesz utworzyć osobne pytanie o przepełnienie stosu)

Powyższa struktura danych i przykładowe zapytania powinny wystarczyć do obsługi „zaawansowanego filtrowania”




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB porównuje daty tylko bez godzin

  2. Znajdź dokumenty zawierające element w polu Array z mongomapperem?

  3. Jak liczyć różne elementy daty w polu znacznika czasu w Mongoose/NodeJS?

  4. MongoDB „nie można znaleźć indeksu dla zapytania $geoNear”

  5. Jak znaleźć różnicę godzin między dwiema datami w mongodb