sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur hanterar Trello omarrangemang av kort, listor, checklistor mm

Varje objekt får en pos (ett JavaScript-nummer, så dubbelprecisionsflytande). Sedan renderas de genom att sortera efter pos .

När ett nytt objekt läggs till är det pos baseras på var i listan det är:

  • längst ner på listan - maximalt pos för närvarande i listan + en buffert (jag tror 1024 används)
  • överst på listan - minsta pos för närvarande i listan delat med två
  • mitten av listan - genomsnitt av pos av de två intilliggande objekten

Det mellersta alternativet skulle tilldelas av klienten; toppen/botten kan antingen tilldelas av klienten eller skickas till servern som strängarna "top" eller "bottom" i så fall kommer servern att utföra logiken.

På servern, efter att ha tilldelats pos till det nya föremålet som visas ovan kontrolleras föremålet mot dess närmaste grannar för närhet - om de är mindre än ett minsta avstånd från varandra (.01 används, tror jag), är de utspridda (potentiellt överlappande till att öka pos av hela listan).

Jag tror inte att detta är det perfekta sättet, men det är hur Trello gör det.




  1. Hur gör man ett genomsnitt av de summerade värdena i mongodb?

  2. Hur använder man ett Javascript-objekt i mongodb-aggregationspipeline?

  3. Kan vi använda vårens datalager för att uppdatera inbäddade dokument i mongodb

  4. Hitta alla objekt i samlingen Java Mongodb