Docs Menu
Docs Home
/ / /
Java 同期
/ /

ドキュメントのデータ形式: レコード

項目一覧

  • 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()
@BsonRepresentation(BsonType.OBJECT_ID)
String deviceId,
String name,
@BsonProperty("type")
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]

戻る

ドキュメントのデータ形式: POJO