Menu Docs
Página inicial do Docs
/ / /
Java síncrono
/ /

Formato de dados do documento: Registros

Nesta página

  • Visão geral
  • Serializar e desserializar um registro
  • Exemplo de registro
  • Inserir um registro
  • Recuperar um registro
  • Especificar conversão de componente usando anotações
  • Exemplo de registro anotado
  • Inserir um registro anotado
  • Recuperar um registro anotado

Neste guia, você aprenderá como armazenar e recuperar dados no driver Java do MongoDB usando registros Java. Os registros Java são um tipo de classe Java frequentemente usado para modelar dados e separar a lógica de negócios da representação de dados.

Dica

Você pode declarar registros Java no Java 16 ou posterior. Saiba mais sobre a funcionalidade e as restrições dos registros em Java 17 Atualizações de linguagens: classes de registros.

Se você estiver usando uma versão anterior do Java, poderá usar objetos Java antigos simples. Consulte o guia Formato de data do documento: POJOs para obter detalhes da implementação.

O driver suporta nativamente a codificação e a decodificação de registros Java para operações de leitura e gravação do MongoDB usando o registro de codec padrão. O registro de codecs padrão é uma coleção de classes chamadas codecs que definem como converter tipos Java de codificação e decodificação. Saiba mais sobre codecs e o registro de codec padrão no guia sobre Codecs.

Os exemplos de código nesta seção referenciam o seguinte registro de amostra, que descreve um dispositivo de armazenamento de dados:

public record DataStorageRecord(
String productName,
double capacity
) {}

Você pode inserir uma instância do DataStorageRecord como mostrado no seguinte código:

MongoCollection<DataStorageRecord> collection = database.getCollection("data_storage_devices", DataStorageRecord.class);
// insert the record
collection.insertOne(new DataStorageRecord("2TB SSD", 1.71));

Você pode recuperar documentos como instâncias DataStorageRecord e imprimi-los como demonstrado no seguinte código:

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]

Esta seção descreve as anotações que você pode usar para configurar o comportamento de serialização dos componentes de registro e fornece um exemplo para demonstrar o comportamento da anotação.

Dica

O pacote org.bson.codecs.records.annotations está obsoleto. Use os equivalentes do pacote org.bson.codecs.pojo.annotations.

Você pode usar as seguintes anotações nos componentes do registro:

Nome da Anotação
Descrição
BsonId
Especifica o componente a ser serializado como propriedade _id.
BsonProperty
Especifica um nome de campo de documento personalizado ao converter o componente de registro em JSON. Aceita o nome do campo como parâmetro.
BsonRepresentation
Especifica um tipo BSON para armazenar quando diferente do tipo de componente de registro. Aceita o tipo BSON como parâmetro.

Os exemplos de código nesta seção referenciam o seguinte registro de amostra, que descreve um dispositivo de rede:

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
)
{}

Você pode inserir uma instância do DataStorageRecord como mostrado no seguinte código:

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"));

O documento inserido no MongoDB deve ser semelhante ao seguinte:

{
_id: ObjectId("fedc..."),
name: 'Enterprise Wi-fi',
type: 'router'
}

Você pode recuperar documentos como instâncias NetworkDeviceRecord e imprimi-los como demonstrado no seguinte código:

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]

Voltar

Formato de dados do documento: POJOs