sql >> Database >  >> NoSQL >> MongoDB

Hoe gaat Trello om met het herschikken van kaarten, lijsten, checklists, enz.

Elk item krijgt een pos (een JavaScript-nummer, dus dubbele precisie float). Vervolgens worden ze weergegeven door te sorteren op pos .

Wanneer een nieuw item wordt toegevoegd, is dit pos is gebaseerd op waar in de lijst het is:

  • onderaan de lijst - maximum pos momenteel in de lijst + een buffer (ik denk 1024 wordt gebruikt)
  • bovenaan de lijst - minimaal pos momenteel in de lijst gedeeld door twee
  • midden van lijst - gemiddelde van pos van de twee aangrenzende items

De middelste optie zou worden toegewezen door de klant; de top/bottom kan worden toegewezen door de client of worden doorgegeven aan de server als de strings "top" of "bottom" in dat geval zal de server de logica uitvoeren.

Op de server, na het toewijzen van de pos aan het nieuwe item, zoals hierboven weergegeven, wordt het item vergeleken met zijn naaste buren op aangrenzendheid - als ze minder dan een minimale afstand van elkaar verwijderd zijn (.01 wordt gebruikt, geloof ik), zijn ze verspreid (mogelijk trapsgewijs in het verhogen van de pos van de hele lijst).

Ik denk niet dat dit de ideale manier is, maar het is hoe Trello het doet.




  1. Migreren van MongoDB naar HBase

  2. Loop door alle Mongo-verzamelingen en voer de query uit

  3. Mongoexport -q ISODate-query

  4. nadelen van het gebruik van IQueryable !