MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB/JS - Recherche avancée à facettes - Comment obtenir uniquement les catégories/valeurs pertinentes

À la base, vous pouvez créer les 2 catégories comme suit

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)

Quand tu veux trouver toutes les catégories

db.category.find()

Lorsque vous avez besoin de trouver tous les produits d'une catégorie, utilisez le Category _id

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

Lorsque vous avez besoin de trouver tous les produits d'une catégorie ET d'une sous-catégorie

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

Lorsque vous avez besoin de trouver un seul produit

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

Lorsque vous souhaitez rechercher un produit par son nom

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

Lorsque vous voulez trouver toutes les catégories qui contiennent BMW

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

Une fois que vous avez commencé à créer la base de données, vous passez à la création des vues pour votre base de données avec agrégation, ainsi que javascript. (que vous pouvez créer une question stackoverflow séparée)

La structure de données ci-dessus et les exemples de requêtes devraient être suffisants pour gérer votre "filtrage avancé"