sql >> Databasteknik >  >> NoSQL >> MongoDB

Komprimera en sexkantssträng i Ruby/Rails

Du kan representera ett hexadecimalt id i en bas som är högre än 16 för att göra dess strängrepresentation kortare. Ruby har inbyggt stöd för att arbeta med baser från 2 upp till 36 .

b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"

För att konvertera tillbaka den till en sträng med 24 tecken kan du göra något så här:

'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"

För att uppnå bättre "komprimering" kan du representera id:t i bas högre än 36 . Det finns Ruby-bibliotek som hjälper dig med det. all-your-base gem är ett sådant bibliotek.

Jag rekommenderar bas 62 representation eftersom den bara använder 0-9 , a-z och A-Z tecken vilket betyder att den är URL-säker som standard.



  1. Matcha minst N element i en array till en lista med villkor

  2. Port forwarding med nginx från java

  3. Spring Data Redis - UUID id - ConverterNotFoundException

  4. Sharding-nyckel (MongoDB) för ett stort antal dokument