MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB/JS - Разширено фасетно търсене - Как да получите само подходящи категории/стойности

Най-общо можете да създадете 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)

Горната структура на данните и примерните заявки трябва да са достатъчни, за да се справят с вашето „разширено филтриране“




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Уникални документи в колекция MongoDB

  2. Вложени $addFields в MongoDB

  3. Mongo ObjectIDs не са равни един на друг

  4. Преобразувайте ObjectID (Mongodb) в String в JavaScript

  5. mongodb 3.x драйвер за съвместимост с Android