sql >> Databáze >  >> NoSQL >> MongoDB

Komprese hex řetězce v Ruby/Rails

Hexadecimální id můžete představovat v základu vyšším než 16 aby byla jeho řetězcová reprezentace kratší. Ruby má vestavěnou podporu pro práci s bázemi z 2 až do 36 .

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

Chcete-li jej převést zpět na 24znakový řetězec, můžete udělat něco takového:

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

Chcete-li dosáhnout lepší "komprese", můžete uvést id v základu vyšším než 36 . Existují knihovny Ruby, které vám s tím pomohou. all-your-base gem je jednou z takových knihoven.

Doporučuji základ 62 reprezentace, protože používá pouze 0-9 , a-z a A-Z znaků, což znamená, že je ve výchozím nastavení bezpečné pro adresy URL.



  1. node.js mongodb - collection.find().toArray(zpětné volání) - zpětné volání není voláno

  2. MongoDB / Geojson $geointersects problémy

  3. existuje způsob, jak automaticky generovat ObjectId, když je model mongoose nový?

  4. Import doménových tříd ze samostatného modulu GORM do Grails