Bancos de dados e coleções
Nesta página
Visão geral
Neste guia, você verá como usar o driver Rust para acessar e managed reconhecimento de data center e collection do MongoDB.
O MongoDB organiza os 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 collection, o MongoDB armazena dados como documento que contêm pares de campo e valor.
Para saber mais sobre o formato de dados do documento, consulteDocumentos do no manual do servidor MongoDB.
Acessar um banco de dados
Você pode acessar um banco de dados de dados recuperando um banco de dados instância do seu cliente. Você pode usar uma Database
instância para executar operações em nível de banco de dados e acessar collections que o banco de dados de dados contém.
Chamar um dos seguintes métodos em um cliente instância para criar um Database
:
banco de dados() : recuperar um banco de dados por seu nome
database_with_options(): definir opções (DatabaseOptions) ao recuperar um banco de dados de dados por seu nome
default_database(): acesse o banco de dados padrão especificado para sua
Client
instância
Dica
Para especificar o reconhecimento de data center padrão para seu cliente, defina o campo default_database
de sua estrutura ClientOptions
. Se você não definir esse campo, o driver obterá o reconhecimento de data center padrão do componente defaultauthdb
da string de conexão.
Se você passar o nome de um reconhecimento de data center inexistente para os métodos database()
ou database_with_options()
, o driver ainda retornará uma instância Database
. Quando você insere qualquer dado na collection desse reconhecimento de data center, o servidor o cria.
O exemplo a seguir utiliza o método database()
para acessar um banco de dados denominado test_db
:
let db = client.database("test_db");
bancos de dados de lista
Para ver uma lista dos bancos de dados do seu sistema, chame o list_database_names() na sua Client
instância do . Este método retorna um tipo Vec<String>
, um vetor contendo os nomes do banco de dados como strings.
Para ver informações detalhadas sobre cada banco de dados, chame o list_databases () na sua Client
instância do . Este método retorna um tipo Vec<DatabaseSpecification>
. Especificação do Banco de Dados tipo contém campos que descrevem cada banco de dados, como seu tamanho e se contém dados.
O seguinte exemplo mostra como imprimir uma lista de reconhecimento de data center utilizando o método list_database_names()
:
let db_list = client.list_database_names().await?; println!("{:?}", db_list);
["admin", "local", "test_db", ...]
Soltar um banco de dados
A eliminação de um banco de dados de dados exclui permanentemente todos os dados nas coleções desse banco de dados. Para soltar um banco de dados de dados, chame o método drop() na sua instância do Database
. O seguinte código mostra como descartar um banco de dados de dados referenciado pela variável db
:
db.drop().await?;
Aviso
Eliminar um reconhecimento de data center exclui os dados
Descartar um reconhecimento de data center exclui permanentemente todos os documento na collection do reconhecimento de data center e todos os índices nessas collection. Depois de descartar um reconhecimento de data center, você não poderá acessar ou restaurar nenhum de seus dados.
Acessar uma coleção
Você pode acessar uma collection recuperando uma collection instância do seu banco de dados. Você pode usar uma instância Collection
para executar operações de dados, criar agregações e gerenciar índices. Ligue para um dos seguintes métodos em uma instância Database
para recuperar um Collection
:
collection(): recuperar uma coleção por seu nome
collection_with_options(): definir opções (CollectionOptions) ao acessar uma collection pelo nome
Se você passar o nome de uma coleção inexistente para os métodos collection()
ou collection_with_options()
, o driver ainda retornará uma instância Collection
. Quando você insere quaisquer dados nessa coleção, o servidor os cria. Para saber como criar explicitamente uma collection, consulte a seção Criar uma collection deste guia.
Este exemplo utiliza o método collection_with_options()
para executar a seguinte ação:
Acessar uma coleção chamada
coll_xyz
a partir de um banco de dados referenciado pela variáveldb
Definir uma write preference na collection no tipo
CollectionOptions
let wc = WriteConcern::builder().journal(true).build(); let coll_opts = CollectionOptions::builder().write_concern(wc).build(); let my_coll: Collection<Document> = db.collection_with_options("coll_xyz", coll_opts);
Para saber mais sobre write concerns, consulte Write Concern no manual do servidor MongoDB.
Parametrização de collection
Você deve parametrizar sua instância do Collection
especificando o tipo de dados em que deseja serializar os dados da coleção. Quando você chama um método em uma instância do Collection
que é parametrizada com um tipo específico, o método aceita ou retorna instâncias deste tipo.
Observação
Se você não parametrizar sua instância do Collection
, o compilador inferirá o tipo genérico quando você executar uma operação CRUD com um tipo de dados especificado no mesmo escopo.
O exemplo seguinte mostra formas equivalentes de parametrizar uma collection com o tipo Document
:
let my_coll: Collection<Document> = client.database("test_db").collection("coll_xyz"); let my_coll = client.database("test_db").collection::<Document>("coll_xyz");
Dica
Recomendamos que você parametrize sua instância do Collection
com um tipo personalizado que modele seus dados em vez do tipo do Document
. Você pode evitar serialização e validação repetitivas definindo um tipo que modele seus dados específicos.
Para saber mais sobre serialização no driver Rust, consulte o guia sobre Modelagem e serialização de dados.
Criar uma coleção
Você pode criar explicitamente uma coleção chamando o create_collection () em uma instância Database
do . Este método usa o nome da coleção como parâmetro. Você pode usar uma instância Collection
para executar operações de dados, criar agregações e gerenciar índices.
O código a seguir mostra como criar uma collection chamada coll_abc
dentro de um reconhecimento de data center referenciado pela variável db
:
db.create_collection("coll_abc").await?;
Ao criar uma collection, você pode implementar a validação de esquema para manter um documento consistente e controlar se alguma operação de gravação pode ignorar as regras de validação. Para saber como habilitar esse recurso, consulte o guia sobre Validação de Esquema.
Listar coleções
Para ver os nomes das coleções em um banco de dados, chame o método list_collection_names() na sua Database
instância do . Este método retorna um tipo Vec<String>
, um vetor contendo os nomes das coleções como strings.
Para ver informações detalhadas sobre cada coleção, chame o método list_collections() na sua Database
instância do . Este método retorna um tipo Vec<CollectionSpecification>
. A Especificação da Coleção type contém campos que descrevem cada collection, como seu tipo e configurações.
O exemplo abaixo mostra como imprimir os nomes das collections em um banco de dados referenciado pela variável db
utilizando o método list_collection_names()
:
let coll_list = db.list_collection_names().await?; println!("{:?}", coll_list);
["my_coll", "coll_xyz", ...]
Solte uma coleção
A eliminação de uma coleção exclui permanentemente todos os dados dessa coleção. Para descartar uma coleção, chame o método drop () na sua Collection
instância do . O seguinte código mostra como descartar uma coleção referenciada pela variável my_coll
:
my_coll.drop().await?;
Aviso
Eliminar uma collection exclui dados
Descartar uma collection do seu banco de dados exclui permanentemente todos os documentos e todos os índices dessa collection. Depois de descartar uma coleta, você não poderá acessar ou restaurar nenhum de seus dados.
Informações adicionais
Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação:
Guia Inserir documentos
Bancos de dados e collections no manual do servidor MongoDB
Documentos no manual do servidor MongoDB