各コレクション内の各ドキュメントに.net GUIDの_idフィールドがあるmongodbデータベースがあります。今度は、Javaアプリケーションから同じデータベースを使用したいと考えています。 GUIDをUUIDに変換してオブジェクトを正しくマップする方法Java GUIDをJAVA UUIDでmongodbコレクションの主キーとして使用する方法
0
A
答えて
0
解決策が見つかりました。それが他の人を助けることを願っています。 私は、CSUUID変換のためのutil jsファイルのコードをrobomongoのUUIDに持っていき、JAVAに書き直しました。
今private String HexToBase64(String hex) {
char[] base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/".toCharArray();
String base64 = "";
int group;
for (int i = 0; i < 30; i += 6) {
group = Integer.parseInt(mySubString(hex, i, 6), 16);
base64 += base64Digits[(group >> 18) & 0x3f];
base64 += base64Digits[(group >> 12) & 0x3f];
base64 += base64Digits[(group >> 6) & 0x3f];
base64 += base64Digits[group & 0x3f];
}
group = Integer.parseInt(mySubString(hex, 30, 2), 16);
base64 += base64Digits[(group >> 2) & 0x3f];
base64 += base64Digits[(group << 4) & 0x3f];
base64 += "==";
return base64;
}
private String mySubString(String myString, int start, int length) {
return myString.substring(start, Math.min(start + length, myString.length()));
}
private String CSUUID(String csuuid) {
String hex = csuuid.replaceAll("[{}-]", ""); // remove extra characters
String a = mySubString(hex, 6, 2) + mySubString(hex, 4, 2) + mySubString(hex, 2, 2) + mySubString(hex, 0, 2);
String b = mySubString(hex, 10, 2) + mySubString(hex, 8, 2);
String c = mySubString(hex, 14, 2) + mySubString(hex, 12, 2);
String d = mySubString(hex, 16, 16);
hex = a + b + c + d;
String base64 = HexToBase64(hex);
//return base64.getBytes(StandardCharsets.UTF_8);
return base64;
}
CSUUIDでクエリを実行するためには、このようなクエリを実行する必要があります。
var user = _mongo.findOne(Query.query(Criteria.where("_id").is(new Binary(Bytes.B_UUID, Base64.getDecoder().decode(CSUUID(id.toString()))))), User.class);
感謝を!
1
Java UUIDとMongodb UUIDの両方がUUID standardを実装しています。
たとえば、次のように解析できます。 fromString
:
UUID myUUID = UUID.fromString("449772DE-2780-4412-B9F7-E49E48605875");
文字列表現の使用toString
にUUIDを変換する:
String uuid = myUUID.toString();
// gives "449772de-2780-4412-b9f7-e49e48605875"
大文字/小文字(この例に見られるように)重要ではありません。
文書を照会する方法については、quickstartを参照してください。
関連する問題
- 1. System.Data.SqliteでGUIDを主キーとして使用する方法
- 2. UUIDをデータベースの主キーとして使用すると、Javaのタイプはバイト[
- 3. GUIDを主キーとしていつ使用しますか?
- 4. 小さなSQLテーブルの主キーとしてUUIDを使用
- 5. 主キーUUIDトリガー
- 6. Mongodb:コレクション内の短い主キーとしてのオブジェクトID
- 7. Javaを使用して、MongoDBでのコレクションのアップサンプリング。
- 8. JBossで使用するUUID/GUIDジェネレータ
- 9. Djangoの主キーとしてテキストタイプを使用する方法
- 10. OrmLiteとPostgresでUUIDを主キーとして扱うには?
- 11. Mongodb Java - コレクションのすべてのフィールドを返す方法
- 12. GUID主キーを使用してデータテーブルにデータをロードする方法は?私のプロジェクトで
- 13. express.jsとNode.jsを使用してmongodbコレクションをバックアップする方法
- 14. レプリケーション、uuidフィールド、主キー、行ベースレプリケーション
- 15. javaを使用してMongoDBクエリを実行する方法?
- 16. javaドライバ(v3.4)でmongodbコレクションをコピーする方法
- 17. muleのメッセージプロパティとしてjava uuidを渡す方法
- 18. VBAとADOを使用してMDBテーブルを作成すると、自動的にUUIDを主キーとして使用する方法は?
- 19. java/scalaを使用してmongodbで複合インデックスを使用する方法
- 20. Javaでresttemplateを使用してキー値ペアを渡す方法
- 21. C#ASP.NETは、GUID [主キー]と整数
- 22. MongoDB Javaドライバを使用してデータディレクトリを見つける方法
- 23. mongoose discriminatorsを使用してMongoDBコレクションを照会する方法
- 24. 複雑なRailsデータベースを移行してUUID主キーを使用する方法Postgresql
- 25. PostgreSQLのUUIDは主キーとして索引のパフォーマンスが悪いですか?
- 26. UUIDが主キーとして機能しないLaravel
- 27. Javaを使用してMongoDBのコレクションに埋め込み文書を挿入する方法
- 28. System.GuidをASP.Net MVCの主キーとして使用しますか?
- 29. Javaの$ lookup stageをspringデータmongodbで使用する方法は?
- 30. 主キーのGUIDを使用する場合、COMB GUIDはRails 3.1で良いアイデアですか?
guidはどのように表現されていますか?バイナリ128ビットBLOBまたはテキスト表現ですか? – Jens
ここに私がrobomongoで見たものがありますNUUID( "d8576082-c1aa-41d5-a26e-a7c101487f1c") – Radislav