Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
C#chevron-right

Crie seu primeiro aplicativo .NET Core com o MongoDB Atlas

Nic Raboy6 min read • Published Jan 31, 2022 • Updated Jun 04, 2024
.NETC#
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Você é um desenvolvedor .NET Core ou está tentando se tornar um e gostaria de incluir um banco de dados no mix. O MongoDB é uma ótima escolha e é muito fácil de usar em seus projetos .NET Core.
Neste tutorial, vamos explorar operações CRUD simples em um aplicativo .NET Core, algo que fará com que você se familiarize rapidamente!

Os requisitos

Para que este tutorial cumpra sua finalidade, você precisará ter algumas coisas prontas para usar.
  • .NET Core instalado e configurado.
  • MongoDB Atlas cluster, M0 ou superior, implantado e configurado.
Ambos estão fora do escopo deste tutorial específico, mas você pode consultar este tutorial para obter instruções mais específicas sobre implantações do MongoDB Atlas. Você pode confirmar que o .NET Core está pronto executando o seguinte comando:
1dotnet new console --output MongoExample
Vamos construir um aplicativo de console, mas exploraremos o desenvolvimento de API em um tutorial posterior. O projeto "MongoExample" é o que usaremos no restante deste tutorial.

Instalação e configuração do driver do MongoDB para desenvolvimento do .NET Core

Ao construir aplicativos C#, o gerenciador de pacotes comum a ser usado é o NuGet, algo que está facilmente disponível no Visual Studio. Se você estiver usando o Visual Studio, poderá adicionar o seguinte:
1Install-Package MongoDB.Driver -Version 2.14.1
No entanto, estou em um Mac, uso uma variedade de linguagens de programação e escolhi o Visual Studio Code como o IDE ideal para mim. Não existe uma extensão oficial do NuGet para o Visual Studio Code, mas isso não significa que estamos presos.
Execute o seguinte a partir de uma CLI enquanto estiver no diretório do projeto:
1dotnet add package MongoDB.Driver
O comando acima adicionará uma entrada ao arquivo "MongoExample.csproj" do seu projeto e baixará as dependências necessárias. Isso é importante, usando o Visual Studio Code ou não.
Se você gerou o projeto .NET Core com a CLI como eu criei, você terá um arquivo "Program.cs" com o qual trabalhar. Abra e adicione o seguinte código:
1using MongoDB.Driver;
2using MongoDB.Bson;
3
4MongoClient client = new MongoClient("ATLAS_URI_HERE");
5
6List<string> databases = client.ListDatabaseNames().ToList();
7
8foreach(string database in databases) {
9 Console.WriteLine(database);
10}
O código acima se conecta a um MongoDB Atlas cluster e depois imprime os nomes dos bancos de dados aos quais o usuário específico tem acesso. A impressão dos bancos de dados é opcional, mas pode ser uma boa maneira de garantir que tudo esteja funcionando corretamente.
Se você estiver se perguntando onde obter sua string ATLAS_URI_HERE, você pode encontrá-la no seu dashboard do MongoDB Atlas e clicando no botão de conexão no seu cluster.
String de conexão do MongoDB Atlas
String de conexão do MongoDB Atlas
A imagem acima deve ajudar ao procurar o URI do Atlas.

Construindo uma classe POCO para o modelo de documento MongoDB

Ao usar o .NET Core para trabalhar com documentos MongoDB, você pode usar a classe BsonDocument, mas dependendo do que você esteja tentando fazer, ela pode complicar seu aplicativo .NET Core. Em vez disso, gostaria de trabalhar com classes que são diretamente mapeadas para campos de documento. Isso me permite usar a classe naturalmente em C#, mas saiba que tudo funcionará por conta própria para documentos MongoDB.
Crie um arquivo "playlist.cs" dentro do seu projeto e inclua o seguinte código C#:
1using MongoDB.Bson;
2
3public class Playlist {
4
5 public ObjectId _id { get; set; }
6 public string username { get; set; } = null!;
7 public List<string> items { get; set; } = null!;
8
9 public Playlist(string username, List<string> movieIds) {
10 this.username = username;
11 this.items = movieIds;
12 }
13
14}
Na classe Playlist acima, temos três campos. Se você quiser que cada um desses campos mapeie perfeitamente um campo em um documento do MongoDB, não precisa fazer mais nada. Para ser claro, a classe acima mapearia para um documento parecido com o seguinte:
1{
2 "_id": ObjectId("61d8bb5e2d5fe0c2b8a1007d"),
3 "username": "nraboy",
4 "items": [ "1234", "5678" ]
5}
No entanto, se você quiser que o campo da classe C# seja diferente do campo que ele deve mapear em um documento do MongoDB, será necessário fazer uma pequena alteração. A classe Playlist ficaria mais ou menos assim:
1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Attributes;
3
4public class Playlist {
5
6 public ObjectId _id { get; set; }
7
8 [BsonElement("username")]
9 public string user { get; set; } = null!;
10
11 public List<string> items { get; set; } = null!;
12
13 public Playlist(string username, List<string> movieIds) {
14 this.user = username;
15 this.items = movieIds;
16 }
17
18}
Observe a nova importação e o uso de BsonElement para mapear um campo de documento remoto para um campo de classe local do .NET Core.
Há muitas outras coisas que você pode fazer em termos de mapeamento de documentos, mas elas estão fora do escopo deste tutorial específico. Se você tiver curiosidade sobre outras técnicas de mapeamento, consulte a documentação sobre o assunto.

Implementação de CRUD básico no .NET Core com o MongoDB

Como podemos nos conectar ao Atlas a partir de nosso aplicativo .NET Core e temos algum entendimento de como será nosso modelo de dados para o restante do exemplo, agora podemos trabalhar para criar, ler, atualizar e excluir (CRUD) documentos.
Vamos começar criando alguns dados. Dentro do arquivo "Program.cs" do projeto , faça com que ele fique assim:
1using MongoDB.Driver;
2
3MongoClient client = new MongoClient("ATLAS_URI_HERE");
4
5var playlistCollection = client.GetDatabase("sample_mflix").GetCollection<Playlist>("playlist");
6
7List<string> movieList = new List<string>();
8movieList.Add("1234");
9
10playlistCollection.InsertOne(new Playlist("nraboy", movieList));
No exemplo acima, estamos nos conectando ao MongoDB Atlas, obtendo uma referência à nossa coleção "playlist" enquanto observamos que ela está relacionada à nossa classe Playlist e, em seguida, fazendo uso da função InsertOne na coleção.
Se você executou o código acima, deverá ver um novo documento em sua coleção com informações correspondentes.
Então, vamos ler a partir dessa coleção usando nosso código C#:
1// Previous code here ...
2
3FilterDefinition<Playlist> filter = Builders<Playlist>.Filter.Eq("username", "nraboy");
4
5List<Playlist> results = playlistCollection.Find(filter).ToList();
6
7foreach(Playlist result in results) {
8 Console.WriteLine(string.Join(", ", result.items));
9}
No código acima, estamos criando um novo filtro FilterDefinition para determinar quais dados queremos retornar de nossa operação Find. Em particular, nosso filtro fornecerá todos os documentos que tenham "nraboy" como o campo username, que pode ser mais de um porque nunca especificamos se o campo deve ser exclusivo.
Usando o filtro, podemos fazer um Find na coleção e convertê-lo em um List de nossa classe Playlist. Se você não quiser usar um List, poderá trabalhar com seus dados usando um cursor. Você pode aprender mais sobre cursores na documentação.
Com o Find fora do caminho, vamos passar a atualizar nossos documentos no MongoDB.
Vamos adicionar ao nosso arquivo "Program.cs" com o seguinte código:
1// Previous code here ...
2
3FilterDefinition<Playlist> filter = Builders<Playlist>.Filter.Eq("username", "nraboy");
4
5// Previous code here ...
6
7UpdateDefinition<Playlist> update = Builders<Playlist>.Update.AddToSet<string>("items", "5678");
8
9playlistCollection.UpdateOne(filter, update);
10
11results = playlistCollection.Find(filter).ToList();
12
13foreach(Playlist result in results) {
14 Console.WriteLine(string.Join(", ", result.items));
15}
No código acima, estamos criando duas definições, uma sendo o FilterDefinition que criamos na etapa anterior. Vamos manter o mesmo filtro, mas estamos adicionando uma definição do que deve ser atualizado quando houver uma correspondência com base no filtro.
Para esclarecer, vamos fazer a correspondência em todos os documentos em que "nraboy" é o campo username. Quando houver correspondência, queremos adicionar "5678" à array items em nosso documento. Usando ambas as definições, podemos usar o método UpdateOne para fazer isso acontecer.
Há mais operações de atualização do que apenas a funçãoAddToSet. Vale a pena conferir a documentação para ver o que é possível fazer.
Isso nos leva à operação CRUD básica final. Vamos excluir o documento com o qual estamos trabalhando.
Dentro do arquivo "Program.cs", adicione o seguinte código C#:
1// Previous code here ...
2
3FilterDefinition<Playlist> filter = Builders<Playlist>.Filter.Eq("username", "nraboy");
4
5// Previous code here ...
6
7playlistCollection.DeleteOne(filter);
Vamos usar o mesmo filtro que estamos usando, mas desta vez na função DeleteOne. Embora possamos ter mais de um documento retornado do nosso filtro, a função DeleteOne excluirá apenas o primeiro. Você pode usar a função DeleteMany se quiser excluir todos eles.
Precisa ver tudo junto? Dê uma olhada nisso:
1using MongoDB.Driver;
2
3MongoClient client = new MongoClient("ATLAS_URI_HERE");
4
5var playlistCollection = client.GetDatabase("sample_mflix").GetCollection<Playlist>("playlist");
6
7List<string> movieList = new List<string>();
8movieList.Add("1234");
9
10playlistCollection.InsertOne(new Playlist("nraboy", movieList));
11
12FilterDefinition<Playlist> filter = Builders<Playlist>.Filter.Eq("username", "nraboy");
13
14List<Playlist> results = playlistCollection.Find(filter).ToList();
15
16foreach(Playlist result in results) {
17 Console.WriteLine(string.Join(", ", result.items));
18}
19
20UpdateDefinition<Playlist> update = Builders<Playlist>.Update.AddToSet<string>("items", "5678");
21
22playlistCollection.UpdateOne(filter, update);
23
24results = playlistCollection.Find(filter).ToList();
25
26foreach(Playlist result in results) {
27 Console.WriteLine(string.Join(", ", result.items));
28}
29
30playlistCollection.DeleteOne(filter);
O código acima é tudo o que fizemos. Se você trocasse a string URI do Atlas pela sua própria, ela criaria um documento, o leria, o atualizaria e, finalmente, o excluiria.

Conclusão

Você acabou de ver como começar a usar rapidamente o MongoDB em seu aplicativo .NET Core! Embora tenhamos apenas abordado o que é possível em termos de MongoDB, isso deve preparar você melhor para atender às necessidades do seu projeto.
Se você precisar de mais ajuda, confira os fóruns da MongoDB Community e participe.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Como configurar mapas de classes do MongoDB para C# para otimizar o desempenho de query e o tamanho de armazenamento


Aug 05, 2024 | 8 min read
Tutorial

Criando um jogo de captura de espaço no Unity que sincroniza com o Realm e o MongoDB Atlas


Jun 26, 2024 | 24 min read
Tutorial

Introdução ao Semantic Kernel da Microsoft em C# e MongoDB Atlas


Oct 10, 2024 | 10 min read
Artigo

A versão 3.0 do driver C# está aqui! O que você precisa saber?


Nov 04, 2024 | 5 min read
Sumário