sql >> Database >  >> NoSQL >> MongoDB

MongoDB/JS - Geavanceerd zoeken met facetten - Alleen relevante categorieën/waarden krijgen

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




  1. Juiste manier om schemawijzigingen in MongoDB af te handelen met java-stuurprogramma

  2. Mongo en Node.js:een document zoeken op _id met behulp van een UUID (GUID)

  3. MongoDB-update:genereer een nieuw veld op basis van een bestaand veld of update ter plekke

  4. Hoe het percentiel te berekenen?