MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB/JS - Ricerca sfaccettata avanzata - Come ottenere solo categorie/valori pertinenti

In pratica, puoi creare le 2 categorie come segue

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)

Quando vuoi trovare tutte le categorie

db.category.find()

Quando hai bisogno di trovare tutti i prodotti in una categoria, usa Category _id

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

Quando hai bisogno di trovare tutti i prodotti in una categoria E sottocategoria

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

Quando hai bisogno di trovare un unico prodotto

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

Quando vuoi trovare un prodotto per nome

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

Quando vuoi trovare tutte le categorie che contengono BMW

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

Una volta iniziata la creazione del database, si passa alla creazione delle viste per il proprio db con aggregazione, oltre a javascript. (che puoi creare una domanda di stackoverflow separata)

La struttura dei dati di cui sopra e le query di esempio dovrebbero essere sufficienti per gestire il tuo "filtro avanzato"