如何将MongoDb的ObjectId的12字节BSON字符串编码为更短的形式。 从24长度线到8或6?
我尝试过base64编码,现在我使用的是ObjectID的普通字符串值
要求
字符串将用作唯一的短网址。
ObjectId -> http://bla.com/{encode(ObjectId.toString('ascii'))} -
反向操作
http://bla.com/gf8a4as1 -> Model.findById(decode(gf8a4as1)).lean().exec().then((model) => res.json(model)
答案 0 :(得分:0)
您想将12个字节可逆地打包成4-8个符号吗?除非你使用长度超过1个字节的字符(对于网址来说可能不是最理想的),否则这是不可能的。
您最好的选择是使用base64的变体(例如RFC4648的标准urlsafe变体,-
和_
),它将为您提供16个符号。否则,如果您不需要全局唯一性,请考虑使用较短的ID(例如,序号?)。