ドキュメントのデータ形式: レコード
項目一覧
Overview
このガイドでは、 Java レコードを使用して MongoDB Java ドライバー にデータを保存および検索する方法を学習します。 Java レコードは、データをモデル化し、ビジネス ロジックをデータ表現から分離するためによく使用される Java クラスのタイプです。
Tip
Java レコードは Java 16以降で宣言できます。 レコードの機能と制限の詳細については、 Java17 言語更新: クラスのレコード を参照してください。
Java の以前のバージョンを使用している場合は、代わりに Plain Old Java オブジェクトを使用できます。 実装の詳細については、「 ドキュメント データ形式: POJOのガイド 」を参照してください。
レコードの直列化と逆直列化
ドライバーは、デフォルトの コーデック レジストリを使用して MongoDB の読み取りおよび書込み (write) 操作の Java レコードのエンコードとデコードをネイティブでサポートしています。 デフォルトのコーデック レジストリは、Java 型をエンコードおよびデコードする方法を定義するコーデックと呼ばれるクラスのコレクションです。 コーデックとデフォルトのコーデック レジストリの詳細については、「 コーデック に関するガイド」を参照してください。
サンプル レコード
このセクションのコード例では、データ ストレージ デバイスを説明する次のサンプル レコードを参照します。
public record DataStorageRecord( String productName, double capacity ) {}
レコードの挿入
次のコードに示すように、 DataStorageRecord
インスタンスを挿入できます。
MongoCollection<DataStorageRecord> collection = database.getCollection("data_storage_devices", DataStorageRecord.class); // insert the record collection.insertOne(new DataStorageRecord("2TB SSD", 1.71));
レコードの検索
次のコードに示すように、ドキュメントをDataStorageRecord
インスタンスとして取得し、印刷できます。
MongoCollection<DataStorageRecord> collection = database.getCollection("data_storage_devices", DataStorageRecord.class); // retrieve and print the records List<DataStorageRecord> records = new ArrayList<DataStorageRecord>(); collection.find().into(records); records.forEach(System.out::println);
DataStorageRecord[productName=1TB SSD, capacity=1.71]
注釈を使用したコンポーネント変換の指定
このセクションでは、レコード コンポーネントの直列化動作を構成するために使用できる注釈について説明し、注釈の動作を示す例を示します。
Tip
org.bson.codecs.records.annotations
パッケージは非推奨です。 org.bson.codecs.pojo.annotations からの同等のものを使用します パッケージを使用してください。
レコード コンポーネントには、次の注釈を使用できます。
注釈名 | 説明 |
---|---|
BsonId | シリアル化するコンポーネントを _id プロパティとして指定します。 |
BsonProperty | レコード コンポーネントを BSON に変換する時のカスタム ドキュメント フィールド名を指定します。 フィールド名をパラメーターとして受け入れます。 |
BsonRepresentation | レコード コンポーネントの型と異なる場合に保存する BSON の型を指定します。 パラメーターとして BSON 型を受け入れます。 |
注釈付きレコードの例
このセクションのコード例では、ネットワーク デバイスを説明する次のサンプル レコードを参照します。
import org.bson.BsonType; import org.bson.codecs.pojo.annotations.BsonProperty; import org.bson.codecs.pojo.annotations.BsonId; import org.bson.codecs.pojo.annotations.BsonRepresentation; public record NetworkDeviceRecord( @BsonId() String deviceId, String name, String deviceType ) {}
注釈付きレコードの挿入
次のコードに示すように、 DataStorageRecord
インスタンスを挿入できます。
MongoCollection<NetworkDeviceRecord> collection = database.getCollection("network_devices", NetworkDeviceRecord.class); // insert the record String deviceId = new ObjectId().toHexString(); collection.insertOne(new NetworkDeviceRecord(deviceId, "Enterprise Wi-fi", "router"));
MongoDB に挿入されたドキュメントは、次のようになります。
{ _id: ObjectId("fedc..."), name: 'Enterprise Wi-fi', type: 'router' }
注釈付きのレコードの検索
次のコードに示すように、ドキュメントをNetworkDeviceRecord
インスタンスとして取得し、印刷できます。
MongoCollection<NetworkDeviceRecord> collection = database.getCollection("network_devices", NetworkDeviceRecord.class); // return all documents in the collection as records List<NetworkDeviceRecord> records = new ArrayList<NetworkDeviceRecord>(); collection.find().into(records); records.forEach(System.out::println);
NetworkDeviceRecord[deviceId=fedc..., name=Enterprise Wi-fi, deviceType=router]