如何將mongodb ID縮短爲更容易解析用於URL的語法。字符串在當前迭代中太長了。在javascript中縮短MongoDB ID
Base64是體面的,但仍然太長。我正在尋找更多的小於7個字符的範圍。
我希望能夠在node.js和瀏覽器中對它進行編碼/解碼。
如何將mongodb ID縮短爲更容易解析用於URL的語法。字符串在當前迭代中太長了。在javascript中縮短MongoDB ID
Base64是體面的,但仍然太長。我正在尋找更多的小於7個字符的範圍。
我希望能夠在node.js和瀏覽器中對它進行編碼/解碼。
解析來自請求的ObjectId並不困難(所以我不知道爲什麼這是一個問題?)。如果目標是製作可鍵入的網址,那麼擁有更短和更「友好」的網址將非常有價值。
你不能採取一個12字節的數字,在分片MongoDB設置中保證是唯一的,並將其壓縮到少於12字節,並保證它是唯一的(例如,你提到了7個字符)。
從docs,所述的MongoDB的ObjectId組成:
因此,您需要犧牲ObjectId的某些部分(因此需要分片),或者設計一個索引的替代Id創建格式。
儘管您可能會對該ID進行散列,但可能會出現需要進行編碼的衝突(再次,您不能將12個字節降至4個字節並保證唯一性)。如果有可能發生衝突(並且會減少可用位的總數),那麼無論如何你需要某種輔助表(並且你需要創建一個從生成的ID到ObjectId的索引) 。
得到的選項:
(目前尚不清楚爲什麼瀏覽器需要做這種轉換 - 爲什麼會在文檔的ObjectID?)
我正在運行在服務器和客戶機上運行的代碼(http:// derbyjs。 COM)。感謝您的信息,我會自己制定一個自定義ID。 – switz
http://stackoverflow.com/questions/1352671/unique-ids -with-mongodb – user956584
這涉及到更改mongodb id字段。我不想這樣做。 – switz
mongodb_id => machine_id [...] http://docs.mongodb.org/manual/core/object-id/ eq。刪除機器ID。或者使用一些簡短的散列函數crc32 [可能的衝突] – user956584