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

Може ли поле със списък да бъде ключ на фрагмент в MongoDB?

Въз основа на някои от обратните връзки, които получавам, които изглежда твърдят, че не е възможно да се раздели, като се използва поле за списък като ключ за разделяне, исках да илюстрирам как този случай на употреба може да бъде разделен, като се използват ограниченията на MongoDB:

Оригинален обект:

widget:
{
    primary_key: '2389sdjsdafnlfda'

    categories: ['hair', 'nails', 'dress']
    colors:     ['red', 'white']

    #All the other fields in the document that don't need to be queried upon: 
    ...
    ...
}

Слоят с данни разделя обекта на множество указателни обекти въз основа на броя на елементите в полето, избрано за ключа на фрагмента:

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'hair',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'nails',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'dress',
    colors:     ['red', 'white']
}

Обяснение:

  • Полето categories вече може да бъде shard ключът в MongoDB.
  • Оригиналният обект вече ще се съхранява в хранилище за ключ-стойност. Заявките към данните в MongoDB ще върнат указателен обект, който ще се използва за получаване на обекта от хранилището за ключ-стойност.
  • Заявките за данните на MongoDB ще засегнат само един фрагмент.
  • Вмъкванията в данните на MongoDB ще засегнат толкова фрагменти, колкото има елементи в списъка, в повечето случаи само малка част от общия брой фрагменти ще бъдат засегнати.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Внедряването на Strapi Heroku не успява да се свърже с MongoDB

  2. Как можем да гарантираме целостта на данните в mongoDb?

  3. MongoDB NOW Променлива за агрегиране

  4. Обект на MongoDB, сериализиран като JSON

  5. 3 начина за премахване на стойност от масив в MongoDB