EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
C#chevron-right

Apresentamos o MongoDB Analyzer para .NET

Adrienne Tacke6 min read • Published Jan 11, 2022 • Updated Aug 05, 2024
.NETC#
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse anúncio
star-empty
star-empty
star-empty
star-empty
star-empty

Apresentamos o MongoDB Analyzer para .NET

Corrija os culpados do código em tempo de compilação!
Como desenvolvedores de C# e .NET, sabemos que, às vezes, pode ser Frustrante trabalhar idiomaticamente com queries e agregações do MongoDB. Sem uma maneira de ver se sua query LINQ ou expressão Builder corresponde à MongoDB Query API (anteriormente conhecida como MQL) durante o desenvolvimento, você anteriormente tinha que esperar por erros de tempo de execução para solucionar problemas com suas queries. Sabemos que tinha que haver uma maneira de trabalhar de forma mais integrada com C# e MongoDB.
É por isso que criamos o MongoDB Analyzer para .NET! Em vez de mapear manualmente a versão idiomática de sua query em C# para a MongoDB Query API, o MongoDB Analyzer pode fazer isso por você e até mesmo fornecer a expressão de API de query gerada diretamente em seu IDE. O MongoDB Analyzer apresenta informações e avisos úteis sobre expressões inválidas no momento da compilação, proporcionando maior visibilidade às causas raiz dos bugs. E quando usado junto com o provedor LINQ3 lançado recentemente ( agora suportado no MongoDB C#/.NET Driver 2.14.0 e superior), você pode compor e entender as queries de uma maneira muito mais gerenciável .
Vamos dar uma olhada em como instalar e usar o novo MongoDB Analyzer como um pacote NuGet. Seguiremos com alguns exemplos de código para que você possa ver por que essa é uma ferramenta obrigatória para o Visual Studio!

Instalar o MongoDB Analyzer como um pacote NuGet

No Visual Studio, instale o MongoDB.Analyzer Pacote NuGet:
Gerente de pacotes
.NET CLI
Depois de instalado, ele será adicionado à lista de dependências do seu projeto, em Analisadores: MongoDB.Analyzer mostrado dentro da pasta Dependências/Analyzers
Após a instalação e a execução do analisador, você encontrará todos os avisos de diagnóstico no painel Lista de erros. Ao começar a inspecionar seu código, você também verá que quaisquer expressões não suportadas serão destacadas.

Inspecionando mensagens de informações e avisos

À medida que você escreve expressões LINQ ou Builders, uma dica de ferramenta de informações pode ser acessada passando o mouse sobre os três pontos cinzas sob sua expressão:
Acessando a dica de ferramenta para uma expressão LINQ Acessando a dica de ferramenta para uma expressão LINQ
Esta dica de ferramenta exibe o idioma da API de consulta correspondente à expressão que você está escrevendo e atualiza em tempo real! Com a query convertida em suas dicas de ferramentas, você pode confirmar que a query que está sendo gerada (e executada): é a que você espera.
Este é um processo muito mais eficiente de compor e testar queries – concentre-se nas expressões inválidas em vez de perder tempo traduzindo seu código para a API de queries! E, se precisar copiar as queries resultantes geradas, você pode fazer isso diretamente do seu IDE (no painel Lista de erros).
Outro problema comum que o MongoDB Analyzer resolve é detectar expressões não suportadas e queries inválidas no momento da compilação. Você encontrará todos esses problemas listados como avisos:
Expressões não suportadas mostradas como avisos na lista de erros do Visual Studio Expressões não suportadas mostradas como avisos na lista de erros do Visual Studio
Isso é bastante útil, pois nem todas as expressões LINQ são suportadas pelo driver MongoDB C#/.NET. Da mesma forma, as expressões suportadas serão diferentes dependendo da versão do LINQ que você usar.

Exemplos de código: veja o MongoDB Analyzer para .NET em ação

Agora que sabemos o que o MongoDB Analyzer pode fazer por nós, vamos ver ao vivo!

Expressões de construtores

Estes são alguns exemplos que mostram como as expressões do Builder são analisadas. Como você verá, o MongoDB Analyzer fornece feedback imediato por meio da dica de ferramenta. Passar o mouse sobre seu código mostra o idioma da API de query suportado que corresponde à query/expressão que você está escrevendo.
Definição de filtro do Builder - Filtre filmes por gênero correspondente, pontuação maior ou igual à pontuação mínima e uma correspondência ao termo do Atlas Search do título. GIF mostrando um filtro construtor sendo implementado. Alterna entre passar o mouse sobre a expressão para mostrar a dica de ferramenta e a expressão correspondente da API de consulta do MongoDB gerada e adicionar ao filtro do construtor.
Builder Sort Definition (Definição de classificação do construtor) - Classifique os filmes por pontuação (da menor para a maior) e título (de Z para A). Gif mostrando uma definição de classificação de construtor sendo implementada. A dica de ferramenta é então mostrada com a expressão gerada da API de query do MongoDB.
Expressão de construtor não suportada - Realçada e mostrada como aviso na Lista de erros. Gif mostrando uma implementação de expressão de construtor não suportada. Depois de escrito, o código não suportado é destacado corretamente; a dica de ferramenta é mostrada avisando o desenvolvedor da expressão não suportada e o aviso é adicionado ao painel Lista de erros do IDE.

Queries LINQ

O MongoDB Analyzer usa o provedor LINQ padrão do driver C#/.NET (LINQ2). As expressões que não são compatíveis com LINQ2 , mas são compatíveis com LINQ3 , mostrarão os avisos apropriados, como você verá em um dos exemplos a seguir. Se você quiser alterar o provedor LINQ que o MongoDB Analyzer usa, defina“DefaultLinqVersion”: “V3”no arquivomongodb.analyzer.json.
Consulta de filtro LINQ - pipeline de agregação. Gif mostrando uma query LINQ sendo implementada com várias condições. Depois, uma dica de ferramenta com a expressão correspondente da API de consulta do MongoDB é mostrada.
Query LINQ - Obter estatísticas de gênero de filme; usa o pipeline de agregação para agrupar e selecionar um objeto dinâmico. Gif mostrando uma query LINQ sendo implementada que usa um grupo por declaração e seleção de um objeto dinâmico. Em seguida, uma dica de ferramenta com a expressão correspondente do MongoDB Query API é exibida.
Expressão LINQ não compatível - Método GetHashCode() não compatível. Gif mostrando a implementação de uma expressão LINQ não compatível. Depois de escrito, o código não suportado é destacado corretamente; a dica de ferramenta é mostrada avisando o desenvolvedor sobre a expressão não suportada e o aviso é adicionado ao painel Lista de erros do IDE.
Expressão LINQ não suportada - O método referenciando um parâmetro lambda não é suportado. Gif mostrando a implementação de uma expressão LINQ não compatível. Depois de escrito, o código não suportado é destacado corretamente; a dica de ferramenta é mostrada avisando o desenvolvedor sobre a expressão não suportada e o aviso é adicionado ao painel Lista de erros do IDE.
LINQ2 não compatível, mas expressão LINQ3 compatível - Trim() não é compatível em LINQ2, mas é compatível em LINQ3. GIF mostrando uma expressão que não tem suporte no LINQ2, mas com suporte no LINQ3, sendo implementado. Depois de escrito, o código sem suporte é realçado corretamente; A dica de ferramenta avisa o desenvolvedor sobre a expressão não suportada no LINQ2 mas não no LINQ3 e o aviso é adicionado ao painel Lista de Erros do IDE.

MongoDB Analyzer + Novo provedor de LINQ3 = }

Se você prefere não ver esses avisos "unsupported in LINQ2, but supported in LINQ3 ", agora também é um bom momento para atualizar para o driver mais recente do MongoDB C#/.NET (2.14.1) que tem LINQ3 apoio! Enquanto a transição completa do LINQ2 para o LINQ3 continua, você pode configurar explicitamente seu MongoClient para usar o novo provedor LINQ da seguinte forma:

Integre o MongoDB Analyzer para .NET em seus pipelines

O MongoDB Analyzer também pode ser usado a partir da CLI, o que significa que a integração dessa ferramenta de análise estática em sua integração contínua e pipelines de implantação contínua é perfeita! Por exemplo, executar dotnet build na linha de comando enviará avisos do MongoDB Analyzer para o terminal:
A execução do comando dotnet build gera avisos do MongoDB Analyzer A execução do comando dotnet build gera avisos do MongoDB Analyzer
Adicionar isso como uma etapa em seu pipeline de build pode ser uma verificação de portão valiosa para seu build. Você evitará uma possível dores de cabeça e detectará expressões não suportadas e queries inválidas muito mais cedo.
Outra ideia: Produza umarquivoSARIF(Static Analysis Results Interchange Format) e use-o para gerar planos de explicação para todas as suas consultas. O SARIF é um formato padrão baseado em JSON para a saída de ferramentas de análise estática, tornando um arquivo SARIF o local ideal para obter as consultas compatíveis geradas pelo MongoDB Analyzer.
Para gerar um arquivo SARIF para seu projeto, você precisará adicionar a opçãoErrorLog ao seu arquivo.csproj. Você poderá encontrá-lo na raiz do seu projeto (a menos que tenha especificado de outra forma) da próxima vez que criar seu projeto.
Com esse arquivo, você pode carregá-lo por meio de um scriptmongosh, processar o arquivo para localizar e "clean " as expressões encontradas da API de query do MongoDB e gerar planos de explicação para a lista de queries. O que você pode fazer com isso? Um ótimo exemplo seria gerar um aviso de compilação (ou falhar completamente na compilação) se você detectar algum índice ausente! Adicionando etapas como essas à sua compilação e usando as informações dos planos de explicação, você pode evitar que possíveis problemas de desempenho cheguem à produção.

Queremos ouvir você!

Com o lançamento do MongoDB Analyzer para .NET, queremos acelerar seu ciclo de desenvolvimento e aumentar sua produtividade de três maneiras: 1) facilitando o mapeamento de suas queries idiomáticas para a API de query do MongoDB, 2) ajudá-lo a identificar expressões não suportadas e queries inválidas mais rapidamente (no tempo de compilação) e 3) simplificar seu processo de desenvolvimento ao permitir a análise estática para suas queries do MongoDB em seus pipelines de CI/CD!
Estamos muito ansiosos para ver as comunidades .NET e C# usando essa ferramenta e ainda mais ansiosos para ouvir seus comentários. O MongoDB Analyzer está pronto para ser instalado como um pacote NuGet e pode ser adicionado a qualquer projeto existente que use o driver MongoDB .NET. Queremos continuar melhorando essa ferramenta e isso só pode ser feito com a sua ajuda. Se você encontrar algum problema, estiver faltando uma funcionalidade crítica ou tiver um caso extremo que o MongoDB Analyzer não atenda, informe-nos! Você também pode publicar em nossos fóruns da comunidade.
Recursos adicionais

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse anúncio
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Adicionando o MongoDB Atlas Vector Search a um aplicativo .NET Blazor C#


Feb 29, 2024 | 10 min read
exemplo de código

Salvando dados no Unity3D usando SQLite


Sep 07, 2022 | 13 min read
Tutorial

Working With MongoDB Transactions With C# and the .NET Framework


Sep 11, 2024 | 3 min read
Tutorial

Desenvolvimento de um jogo de plataforma de rolagem lateral com Unity e MongoDB Realm


Feb 03, 2023 | 20 min read
Sumário
  • Apresentamos o MongoDB Analyzer para .NET