Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Bancos de dados e coleções

O MongoDB organiza dados em uma estrutura hierárquica. Um sistema do MongoDB contém um ou mais bancos de dados, e cada banco de dados contém uma ou mais collections. Em cada coleta, o MongoDB armazena dados como documentos que contêm pares de campo e valor.

Você deve incluir as seguintes declarações de importação em seu programa para executar os exemplos de código neste guia:

import com.mongodb.reactivestreams.client.MongoClients;import com.mongodb.reactivestreams.client.MongoClient;import com.mongodb.reactivestreams.client.MongoCollection;import com.mongodb.reactivestreams.client.MongoDatabase;import static com.mongodb.client.model.Filters.*;import com.mongodb.client.model.CreateCollectionOptions;import com.mongodb.client.model.ValidationOptions;

Importante

Este guia usa implementações personalizadas de Subscriber , que são descritas no guia Exemplos de implementações personalizadas de assinantes .

Primeiro, conecte-se a uma implementação do MongoDB em execução.

O código a seguir se conecta a uma MongoDB deployment standalone em execução em localhost na porta 27017:

MongoClient mongoClient = MongoClients.create();

Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .

Após conectar uma instância do MongoClient a um MongoDB deployment, utilize o método `getDatabase() para acessar um banco de dados.

Passe o nome do banco de dados como um parâmetro para o método getDatabase() . Se um banco de dados não existir, o MongoDB o criará quando você inserir quaisquer dados no banco de dados.

O exemplo a seguir acessa o banco de dados do test :

MongoDatabase database = mongoClient.getDatabase("test");

Observação

MongoDatabase as instâncias são imutáveis. Para saber mais, consulte a seção Imutabilidade deste guia.

Após criar uma instância do MongoDatabase , utilize o método getCollection() para acessar uma coleção de dentro deste banco de dados.

Passe o nome da coleção como um parâmetro para o método getCollection() .

Utilizando a instância database criada na seção anterior, o seguinte código acessa a coleção denominada myTestCollection:

MongoCollection<Document> coll = database.getCollection("myTestCollection");

Observação

MongoCollection as instâncias são imutáveis. Para saber mais, consulte a seção Imutabilidade deste guia.

Se uma coleção com esse nome não existir, o MongoDB a criará quando você inserir os dados pela primeira vez nessa coleção.

Você também pode criar diretamente uma coleção com várias opções, como definir o tamanho máximo ou criar regras de validação de documentação.

O driver fornece o método createCollection() para criar uma coleção diretamente. Ao criar uma collection, você pode especificar várias opções de collection, como um tamanho máximo ou regras de validação de documentação, com a classe CreateCollectionOptions .

Se você não estiver especificando nenhuma opção, não precisará criar a coleção diretamente, pois o MongoDB cria automaticamente novas coleções quando você insere os dados pela primeira vez.

A seguinte operação cria uma capped collection limitada a 1 megabyte:

database.createCollection( "cappedCollection", new CreateCollectionOptions().capped(true).sizeInBytes(0x100000)).subscribe(new OperationSubscriber<Void>());

Para saber mais sobre coleções limitadas, consulte Coleções limitadas no manual do servidor MongoDB.

O MongoDB permite validar documentos durante atualizações e inserções. As regras de validação são especificadas em um nível de coleção usando a classe ValidationOptions , que usa um documento de filtro que especifica as regras ou expressões de validação.

O exemplo a seguir cria uma coleta com validação de esquema:

ValidationOptions collOptions = new ValidationOptions().validator( Filters.or(Filters.exists("email"), Filters.exists("phone"))); database.createCollection( "contacts", new CreateCollectionOptions().validationOptions(collOptions)).subscribe(new OperationSubscriber<Void>());

Para saber mais sobre validação de documentos, consulte Validação de esquema no manual do servidor MongoDB.

Você pode obter uma lista das coleções em um banco de dados utilizando o método MongoDatabase.listCollectionNames() :

database.listCollectionNames().subscribe(new PrintToStringSubscriber<String>());

Você pode descartar uma coleção e excluir todos os dados na coleção usando o método MongoCollection.drop() :

MongoCollection<Document> collection = database.getCollection("contacts");collection.drop().subscribe(new OperationSubscriber<Void>());

Você pode descartar um banco de dados e excluir todas as suas coleções usando o método MongoDatabase.drop(), como mostrado no exemplo a seguir:

MongoDatabase database = mongoClient.getDatabase("test");database.drop().subscribe(new OperationSubscriber<Void>());

Aviso

Eliminar um banco de dados exclui todos os dados do banco de dados

A eliminação de um banco de dados exclui permanentemente todas as coleções, documentos e índices desse banco de dados.

Solte um banco de dados somente se os dados nele não forem mais necessários.

MongoDatabase e MongoCollection instâncias são imutáveis. Para criar novas instâncias a partir de instâncias existentes que tenham propriedades diferentes, como diferentes read concerns, read preferences e write concerns, as classes MongoDatabase e MongoCollection fornecem os seguintes métodos:

  • MongoDatabase.withReadConcern()

  • MongoDatabase.withReadPreference()

  • MongoDatabase.withWriteConcern()

  • MongoCollection.withReadConcern()

  • MongoCollection.withReadPreference()

  • MongoCollection.withWriteConcern()

Para aprender mais, consulte os tutoriais query documentos e Inserir documentos.

Uma sobrecarga do método getCollection() permite especificar uma classe diferente para representar documentos BSON. Por exemplo, talvez você queira usar a classe BsonDocument rigorosa e com segurança de tipo para modelar seus documentos ao executar operações CRUD:

// pass BsonDocument.class as the second argumentMongoCollection<BsonDocument> collection = database .getCollection("mycoll", BsonDocument.class); // insert a documentBsonDocument document = BsonDocument.parse("{x: 1}");collection.insertOne(document).subscribe(new OperationSubscriber<Void>());document.append("x", new BsonInt32(2)).append("y", new BsonInt32(3)); // replace a documentcollection.replaceOne(Filters.eq("_id", document.get("_id")), document) .subscribe(new PrintSubscriber<UpdateResult>("Update Result: %s")); // find documentscollection.find().subscribe(new PrintDocumentSubscriber());

Há dois requisitos que qualquer classe deve atender para ser usada dessa forma:

  • Codec a instância da classe deve ser registrada em CodecRegistry para MongoCollection.

  • Codec A instância deve ser aquela que codifica e decodifica um documento BSON completo, e não apenas, por exemplo, um único valor BSON como um Int32.

Por padrão, um MongoCollection é configurado com instâncias do Codec para três classes:

  • Document

  • BsonDocument

  • BasicDBObject

Os aplicativos são gratuitos para registrar implementações Codec para outras classes personalizando o CodecRegistry. Novas instâncias CodecRegistry são configuráveis nos seguintes níveis:

  • Em um MongoClient dentro MongoClientSettings

  • Em um MongoDatabase dentro de seu método withCodecRegistry

  • Em um MongoCollection dentro de seu método withCodecRegistry

Considere o caso de instâncias de codificação e decodificação da classe UUID . O driver por padrão codifica instâncias de UUID usando uma ordenação de bytes que não é compatível com outros drivers do MongoDB, e alterar o padrão seria perigoso.

É possível que novos aplicativos que exigem interoperabilidade entre vários drivers possam alterar esse padrão, e eles podem fazer isso especificando um CodecRegistry

// replaces the default UuidCodec to use the standard UUID representationCodecRegistry codecRegistry = CodecRegistries.fromRegistries( CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.STANDARD)), MongoClientSettings.getDefaultCodecRegistry()); // globallyMongoClientSettings settings = MongoClientSettings.builder() .codecRegistry(codecRegistry).build();MongoClient client = MongoClients.create(settings); // or per databaseMongoDatabase database = client.getDatabase("mydb") .withCodecRegistry(codecRegistry); // or per collectionMongoCollection<Document> collection = database.getCollection("mycoll") .withCodecRegistry(codecRegistry);