Най-общо можете да създадете 2 категории, както следва
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)
Когато искате да намерите всички категории
db.category.find()
Когато трябва да намерите всички продукти в категория, използвайте Category _id
db.products.find({ cateogry: _id})
Когато трябва да намерите всички продукти в категория И подкатегория
db.products.find({ category: _id, subcategory: 'salon' }) //or subcategory_id
Когато трябва да намерите един продукт
db.products.findOne({ _id }) //with the product_id
Когато искате да намерите продукт по име
db.products.find({ name: { $regex : 'some search term', $option: 'i' } }) // where search term can be part of the product name
Когато искате да намерите всички категории, които съдържат BMW
db.products.aggregate([
{
$match: { "attributes.model": "BMW"
},
{
$group: { _id: "$category" }
}
])
След като започнете да създавате базата данни, преминавате към създаване на изгледи за вашата база данни с агрегиране, както и javascript. (че можете да създадете отделен въпрос за stackoverflow)
Горната структура на данните и примерните заявки трябва да са достатъчни, за да се справят с вашето „разширено филтриране“