MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB/JS – Erweiterte facettierte Suche – So erhalten Sie nur relevante Kategorien/Werte

Ganz einfach können Sie die beiden Kategorien wie folgt erstellen

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)

Wenn Sie alle Kategorien finden möchten

db.category.find()

Wenn Sie alle Produkte in einer Kategorie finden müssen, verwenden Sie die Category _id

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

Wenn Sie alle Produkte in einer Kategorie UND Unterkategorie finden müssen

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

Wenn Sie ein einzelnes Produkt suchen müssen

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

Wenn Sie ein Produkt anhand des Namens suchen möchten

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

Wenn Sie alle Kategorien finden möchten, die BMW enthalten

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

Sobald Sie mit dem Erstellen der Datenbank begonnen haben, fahren Sie mit dem Erstellen der Ansichten für Ihre Datenbank mit Aggregation sowie Javascript fort. (dass Sie eine separate Stackoverflow-Frage erstellen können)

Die obige Datenstruktur und die Beispielabfragen sollten ausreichen, um Ihre "erweiterte Filterung"

zu handhaben