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

MongoDB/JS - Avanceret facetteret søgning - Sådan får du kun relevante kategorier/værdier

Helt grundlæggende kan du oprette de 2 kategorier som følger

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)

Når du vil finde alle kategorierne

db.category.find()

Når du skal finde alle produkter i en kategori, skal du bruge kategorien _id

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

Når du skal finde alle produkter i en kategori, OG underkategori

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

Når du skal finde et enkelt produkt

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

Når du vil finde et produkt ved navn

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

Når du vil finde alle kategorier, der indeholder BMW

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

Når du er begyndt at oprette databasen, så går du videre til at oprette visningerne til din db med aggregering, samt javascript. (at du kan oprette et separat stackoverflow-spørgsmål)

Ovenstående datastruktur og eksempelforespørgsler burde være tilstrækkelige til at håndtere din "avancerede filtrering"




  1. Node.js viser billeder fra Mongo's GridFS

  2. Sådan bruger du en SQL LIKE-sætning i MongoDB

  3. VersionError:Ingen matchende dokument fundet fejl på Node.js/Mongoose

  4. Rails + MongoMapper + EmbeddedDocument formularhjælp