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

Как Trello се справя с пренареждането на карти, списъци, контролни списъци и т.н

Всеки артикул получава pos (номер на JavaScript, така че плаваща точка с двойна точност). След това се изобразяват чрез сортиране по pos .

Когато се добави нов елемент, той е pos се базира на това къде в списъка се намира:

  • долната част на списъка - максимална pos в момента в списъка + буфер (мисля, че 1024 се използва)
  • горе в списъка - минимална pos в момента в списъка, разделен на две
  • средата на списъка - средна стойност на pos от двата съседни елемента

Средният вариант ще бъде зададен от клиента; горната/долната част може да бъде присвоена от клиента или предадена на сървъра като низовете "top" или "bottom" в който случай сървърът ще изпълни логиката.

На сървъра, след присвояване на pos към новия елемент, както е показано по-горе, елементът се проверява спрямо най-близките си съседи за съседство - ако са на по-малко от минимално разстояние един от друг (.01 се използва, вярвам), те са разпръснати (потенциално каскадно в увеличаване на pos от целия списък).

Не мисля, че това е идеалният начин, но Trello го прави така.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Производителност на заявка за актуализиране на Mongo DB

  2. Spring Data MongoDB - $eq в рамките на $project поддръжка

  3. Как да извлечем стойност от mongoDB, по нейното ключово име?

  4. Поле Manytomany в документа на Django mongoengine

  5. Изпълнение на структурата на колекцията MongoDB