mongodb ID を短縮して、URL で使用する構文を解析しやすくするにはどうすればよいですか。現在の反復では文字列が長すぎます。
Base64 はまともですが、それでも長すぎます。サブ 7 文字の範囲でさらに探しています。
node.js とブラウザの両方でエンコード/デコードできるようにしたいと考えています。
mongodb ID を短縮して、URL で使用する構文を解析しやすくするにはどうすればよいですか。現在の反復では文字列が長すぎます。
Base64 はまともですが、それでも長すぎます。サブ 7 文字の範囲でさらに探しています。
node.js とブラウザの両方でエンコード/デコードできるようにしたいと考えています。
リクエストから ObjectId を解析することは難しくありません (なぜそれが問題なのかわかりません)。目標が入力可能な URL を作成することである場合は、短くて「使いやすい」URL を持つことが重要です。
シャードされたMongoDBセットアップで一意であることが保証されている12バイトの数値を取得して、それを12バイト未満に圧縮し、一意であることを保証することはできません(たとえば、7文字で言及しました)。
docsから、MongoDB ObjectId は次のもので構成されます。
そのため、ObjectId の一部を犠牲にする (したがってシャーディングする) か、インデックス付きの別の Id 作成形式を考案する必要があります。
ID を潜在的にハッシュすることはできますが、コーディングしたい競合が発生する可能性があります (繰り返しますが、12 バイトを 4 バイトに減らして一意性を保証することはできません)。競合が発生する可能性がある場合 (使用可能なビットの総数を減らすと競合が発生する可能性があります)、何らかのセカンダリ テーブルが必要になります (また、生成された ID から ObjectId に移動するためのインデックスを作成する必要があります)。 .
結果のオプション:
(ブラウザがこの変換を行う必要がある理由は明らかではありません。なぜドキュメントの ObjectID を持っているのでしょうか?)