sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB/JS - Avancerad fasetterad sökning - Hur får du bara relevanta kategorier/värden

I grunden kan du skapa de två kategorierna enligt följande

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)

När du vill hitta alla kategorier

db.category.find()

När du behöver hitta alla produkter i en kategori, använd kategorin _id

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

När du behöver hitta alla produkter i en kategori, OCH underkategori

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

När du behöver hitta en enda produkt

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

När du vill hitta en produkt efter namn

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

När du vill hitta alla kategorier som innehåller BMW

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

När du har börjat skapa databasen går du vidare till att skapa vyerna för din db med aggregering, samt javascript. (att du kan skapa en separat stackoverflow-fråga)

Ovanstående datastruktur och exempelfrågor bör vara tillräckliga för att hantera din "avancerade filtrering"




  1. Får slaven att bekräfta varje hashuppslagning med mastern om du ställer in slav-skrivskyddat nej?

  2. Hur man installerar Apache CouchDB i Ubuntu 20.04

  3. Async Bulk(batch) infoga till MySQL(eller MongoDB?) via Node.js

  4. MongoDB C# Driver 2.0 - Uppdatera dokument