Na samym początku możesz utworzyć 2 kategorie w następujący sposób
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)
Gdy chcesz znaleźć wszystkie kategorie
db.category.find()
Jeśli chcesz znaleźć wszystkie produkty w kategorii, użyj identyfikatora kategorii
db.products.find({ cateogry: _id})
Kiedy musisz znaleźć wszystkie produkty w kategorii ORAZ podkategorii
db.products.find({ category: _id, subcategory: 'salon' }) //or subcategory_id
Kiedy potrzebujesz znaleźć pojedynczy produkt
db.products.findOne({ _id }) //with the product_id
Gdy chcesz znaleźć produkt według nazwy
db.products.find({ name: { $regex : 'some search term', $option: 'i' } }) // where search term can be part of the product name
Gdy chcesz znaleźć wszystkie kategorie zawierające BMW
db.products.aggregate([
{
$match: { "attributes.model": "BMW"
},
{
$group: { _id: "$category" }
}
])
Po rozpoczęciu tworzenia bazy danych przechodzisz do tworzenia widoków dla swojej bazy danych z agregacją, a także javascript. (że możesz utworzyć osobne pytanie o przepełnienie stosu)
Powyższa struktura danych i przykładowe zapytania powinny wystarczyć do obsługi „zaawansowanego filtrowania”