In de basis kunt u de 2 categorieën als volgt maken
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)
Wanneer u alle categorieën wilt vinden
db.category.find()
Wanneer u alle producten in een categorie moet vinden, gebruikt u de categorie _id
db.products.find({ cateogry: _id})
Wanneer u alle producten in een categorie EN subcategorie moet vinden
db.products.find({ category: _id, subcategory: 'salon' }) //or subcategory_id
Wanneer u een enkel product moet vinden
db.products.findOne({ _id }) //with the product_id
Wanneer u een product op naam wilt zoeken
db.products.find({ name: { $regex : 'some search term', $option: 'i' } }) // where search term can be part of the product name
Wanneer u alle categorieën wilt vinden die BMW bevatten
db.products.aggregate([
{
$match: { "attributes.model": "BMW"
},
{
$group: { _id: "$category" }
}
])
Nadat u bent begonnen met het maken van de database, gaat u verder met het maken van de weergaven voor uw db met aggregatie, evenals javascript. (dat je een aparte stackoverflow-vraag kunt maken)
De bovenstaande gegevensstructuur en voorbeeldquery's zouden voldoende moeten zijn om uw "geavanceerde filtering" af te handelen