文档数据格式:记录
此版本的文档已存档,不再提供支持。 查看 最新文档,学习;了解如何升级您的Java驱动程序版本。
Overview
在本指南中,您可以了解如何使用 Java 记录在 MongoDB Java 驱动程序中存储和检索数据。Java 记录是一种 Java 类,通常用于对数据建模并将业务逻辑与数据表示分开。
提示
您可以在 Java 16 或更高版本中声明 Java 记录。有关记录功能和限制的详情,请参阅 Java 17 语言更新:记录类别。
如果您使用的是早期版本的Java,则可以改用普通的旧Java对象。 有关实施详情,请参阅文档数据格式:POJO指南。
对记录进行序列化和反序列化
该驱动程序本身支持使用默认编解码器注册表对 MongoDB 读写操作的 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]
使用注释指定组件转换
本部分描述可用于配置记录组件序列化行为的注释,并提供示例来演示注释行为。
提示
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]