Partilhar via


Início rápido: Use Azure DocumentDB com o driver do MongoDB para Node.js

Neste quickstart, cria uma aplicação básica do Azure DocumentDB usando Node.js. O Azure DocumentDB é um armazenamento de dados NoSQL que permite às aplicações armazenar documentos na cloud e aceder a eles usando drivers oficiais do MongoDB. Este guia mostra como criar documentos e realizar tarefas básicas no seu cluster Azure DocumentDB usando Node.js.

Referência de API | Código-fonte | Pacote (npm)

Pré-requisitos

  • Uma assinatura do Azure

    • Se você não tiver uma assinatura do Azure, crie uma conta gratuita
  • Node.js 22 ou superior

Criar um cluster Azure DocumentDB

Para começar, primeiro precisa de criar um cluster Azure DocumentDB, que serve como base para armazenar e gerir os seus dados NoSQL.

  1. Iniciar sessão no portal Azure (https://portal.azure.com).

  2. A partir do menu do portal do Azure ou a partir da Home page, selecione Criar um recurso.

  3. Na página Nova, pesquise e selecione Azure DocumentDB.

    Captura de ecrã a mostrar a pesquisa pelo Azure DocumentDB.

  4. Na página Criar cluster Azure DocumentDB e na secção Básicos, selecione a opção Configurar na secção nível do Cluster.

    Captura de ecrã a mostrar a opção Configurar cluster.

  5. Na página Escalar , configure estas opções e depois selecione Guardar para persistir as alterações no nível do cluster.

    Valor
    Camada de cluster M30 tier, 2 vCore, 8-GiB RAM
    Armazenamento por fragmento 128 GiB

    Captura de ecrã das opções de configuração para computação e armazenamento para um novo cluster Azure DocumentDB.

  6. De volta à secção Básicos , configure as seguintes opções:

    Valor
    Subscription Selecione sua assinatura do Azure
    Grupo de recursos Criar um novo grupo de recursos ou selecionar um grupo de recursos existente
    Nome do cluster Forneça um nome globalmente exclusivo
    Localização Selecione uma região do Azure suportada para a sua subscrição
    Versão do MongoDB Selecione 8.0
    Nome de utilizador de administrador Crie um nome de utilizador para aceder ao cluster como administrador de utilizadores
    Senha Use uma palavra-passe única associada ao nome de utilizador

    Captura de ecrã a mostrar parâmetros do cluster.

    Sugestão

    Regista os valores que usas como nome de utilizador e palavra-passe. Estes valores são usados mais adiante neste guia. Para mais informações sobre valores válidos, consulte limitações de cluster.

  7. Selecionar Seguinte: Rede.

  8. Na secção de regras de firewall no separador Rede , configure estas opções:

    Valor
    Método de conectividade Public access
    Permitir o acesso público dos serviços e recursos Azure dentro do Azure para este cluster Ativado
  9. Adicione uma regra de firewall para o seu dispositivo cliente atual para conceder acesso ao cluster selecionando + Adicionar endereço IP atual do cliente.

    Captura de ecrã a mostrar configurações de rede.

    Sugestão

    Em muitos ambientes corporativos, os endereços IP da máquina do desenvolvedor são ocultos devido a uma VPN ou outras configurações de rede corporativa. Nestes casos, pode permitir temporariamente o acesso a todos os endereços IP adicionando o intervalo 0.0.0.0 - 255.255.255.255 de endereços IP como uma regra de firewall. Use esta regra do firewall apenas temporariamente como parte dos testes e desenvolvimento de ligações.

  10. Selecione Verificar + criar.

  11. Reveja as definições fornecidas e, em seguida, selecione Criar. A criação do cluster demora alguns minutos. Aguarde que a implementação dos recursos esteja concluída.

  12. Por fim, selecione Ir para recurso para navegar até ao cluster Azure DocumentDB no portal.

Captura de ecrã a mostrar as opções para aceder ao recurso.

Obter credenciais de cluster

Obtenha as credenciais que usa para se ligar ao cluster.

  1. Na página do cluster, selecione a opção Cadeias de Conexão no menu dos recursos.

  2. Na secção Strings de Ligação, copie ou grave o valor do campo String de Ligação.

Captura de ecrã mostrando a opção de cadeias de ligação.

Importante

A cadeia de conexão no portal não inclui o valor da senha. Você deve substituir o espaço reservado <password> pelas credenciais inseridas quando criou o cluster ou inserir a senha interativamente.

Inicializar o projeto

Crie um novo projeto Node.js no seu diretório atual.

  1. Comece em um diretório vazio.

  2. Abra um terminal no diretório atual.

  3. Inicialize um projeto Node.js.

    npm init -y
    
  4. Instale o TypeScript e inicialize a configuração do TypeScript (opcional para suporte a TypeScript).

    npm install -D typescript @types/node
    npx tsc --init
    

Instalar a biblioteca de cliente

A biblioteca do cliente está disponível através do npm, como o mongodb pacote.

  1. Instala o driver Node.js MongoDB usando npm.

    npm install mongodb
    
  2. Abra e reveja o ficheiropackage.json para validar que a entrada do pacote existe.

  3. Importa os módulos necessários para o código da tua aplicação:

    import { MongoClient, Db, Collection, Document } from 'mongodb';
    
    const { MongoClient } = require('mongodb');
    

Modelo de objeto

Nome Description
MongoClient Tipo usado para se conectar ao MongoDB.
Db Representa um banco de dados no cluster.
Collection<Document> Representa uma coleção dentro de um banco de dados no cluster.

Exemplos de código

O código nesta aplicação liga-se a uma base de dados nomeada adventureworks e a uma coleção chamada products. A products coleção contém detalhes como nome, categoria, quantidade, um identificador único e uma bandeira de venda para cada produto. Os exemplos de código aqui realizam as operações mais comuns ao trabalhar com uma coleção.

Autenticar o cliente

Primeiro, ligue-se ao cliente usando uma cadeia de ligação básica.

  1. Cria a função principal e configura a cadeia de ligação. Substitua <your-cluster-name>, <your-username>, e <your-password> pela informação real do cluster.

    async function main(): Promise<void> {
        // Connection string for Azure DocumentDB cluster
        const connectionString = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";
    
        // Create a new client and connect to the server
        const client = new MongoClient(connectionString);
    
    async function main() {
        // Connection string for Azure DocumentDB cluster
        const connectionString = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";
    
        // Create a new client and connect to the server
        const client = new MongoClient(connectionString);
    
  2. Liga-te ao cliente MongoDB e verifica a ligação.

        try {
            // Connect to the MongoDB cluster
            await client.connect();
    
            // Ping the server to verify connection
            await client.db("admin").command({ ping: 1 });
            console.log("Successfully connected and pinged Azure DocumentDB");
    
        try {
            // Connect to the MongoDB cluster
            await client.connect();
    
            // Ping the server to verify connection
            await client.db("admin").command({ ping: 1 });
            console.log("Successfully connected and pinged Azure DocumentDB");
    

Obtenha uma coleção

Agora, obtenha a sua base de dados e coleção. Se a base de dados e a coleção ainda não existirem, use o driver para criar isso automaticamente para si.

  1. Pede uma referência para a base de dados.

            // Get database reference
            const database: Db = client.db("adventureworks");
            console.log(`Connected to database: ${database.databaseName}`);
    
            // Get database reference
            const database = client.db("adventureworks");
            console.log(`Connected to database: ${database.databaseName}`);
    
  2. Obtenha uma referência para a coleção dentro da base de dados.

            // Get collection reference
            const collection: Collection<Document> = database.collection("products");
            console.log("Connected to collection: products");
    
            // Get collection reference
            const collection = database.collection("products");
            console.log("Connected to collection: products");
    

Criar um documento

Depois, crie alguns novos documentos na sua coleção. Atualize os documentos para garantir que substituem quaisquer documentos existentes, caso já existam com o mesmo identificador único.

  1. Crie exemplos de documentos de produtos.

            // Create sample products
            interface Product {
                _id: string;
                name: string;
                category: string;
                quantity: number;
                price: number;
                sale: boolean;
            }
    
            const products: Product[] = [
                {
                    _id: "00000000-0000-0000-0000-000000004018",
                    name: "Windry Mittens",
                    category: "apparel-accessories-gloves-and-mittens",
                    quantity: 121,
                    price: 35.00,
                    sale: false,
                },
                {
                    _id: "00000000-0000-0000-0000-000000004318",
                    name: "Niborio Tent",
                    category: "gear-camp-tents",
                    quantity: 140,
                    price: 420.00,
                    sale: true,
                }
            ];
    
            // Create sample products
            const products = [
                {
                    _id: "00000000-0000-0000-0000-000000004018",
                    name: "Windry Mittens",
                    category: "apparel-accessories-gloves-and-mittens",
                    quantity: 121,
                    price: 35.00,
                    sale: false,
                },
                {
                    _id: "00000000-0000-0000-0000-000000004318",
                    name: "Niborio Tent",
                    category: "gear-camp-tents",
                    quantity: 140,
                    price: 420.00,
                    sale: true,
                }
            ];
    
  2. Insira os documentos usando operações upsert.

            // Insert documents with upsert
            for (const product of products) {
                const filter = { _id: product._id };
                const options = { upsert: true };
    
                await collection.replaceOne(filter, product, options);
                console.log(`Upserted product: ${product.name}`);
            }
    
            // Insert documents with upsert
            for (const product of products) {
                const filter = { _id: product._id };
                const options = { upsert: true };
    
                await collection.replaceOne(filter, product, options);
                console.log(`Upserted product: ${product.name}`);
            }
    

Recuperar um documento

De seguida, realiza uma operação de leitura pontual para recuperar um documento específico da tua coleção.

  1. Defina o filtro para encontrar um documento específico por ID.

            // Retrieve a specific document by ID
            const filter = { _id: "00000000-0000-0000-0000-000000004018" };
    
            // Retrieve a specific document by ID
            const filter = { _id: "00000000-0000-0000-0000-000000004018" };
    
  2. Execute a consulta e recupere o resultado.

            const retrievedProduct = await collection.findOne(filter);
    
            if (retrievedProduct) {
                console.log(`Retrieved product: ${retrievedProduct.name} - $${retrievedProduct.price}`);
            } else {
                console.log("Product not found");
            }
    
            const retrievedProduct = await collection.findOne(filter);
    
            if (retrievedProduct) {
                console.log(`Retrieved product: ${retrievedProduct.name} - $${retrievedProduct.price}`);
            } else {
                console.log("Product not found");
            }
    

Consultar documentos

Por fim, consulte múltiplos documentos utilizando a Linguagem de Consulta MongoDB (MQL).

  1. Defina uma consulta para encontrar documentos que correspondam a critérios específicos.

            // Query for products on sale
            const saleFilter = { sale: true };
            const saleProducts = await collection.find(saleFilter).toArray();
    
            // Query for products on sale
            const saleFilter = { sale: true };
            const saleProducts = await collection.find(saleFilter).toArray();
    
  2. Itere pelos resultados para mostrar os documentos correspondentes.

            console.log("Products on sale:");
            for (const product of saleProducts) {
                console.log(`- ${product.name}: $${product.price.toFixed(2)} (Category: ${product.category})`);
            }
    
        } catch (error) {
            console.error("An error occurred:", error);
        } finally {
            await client.close();
        }
    }
    
    main().catch(console.error);
    
            console.log("Products on sale:");
            for (const product of saleProducts) {
                console.log(`- ${product.name}: $${product.price.toFixed(2)} (Category: ${product.category})`);
            }
    
        } catch (error) {
            console.error("An error occurred:", error);
        } finally {
            await client.close();
        }
    }
    
    main().catch(console.error);
    

Explore os seus dados usando o Visual Studio Code

Utilize a extensão DocumentDB no Visual Studio Code para realizar operações centrais na base de dados, incluindo consultas, inserção, atualização e eliminação de dados.

  1. Abra o Visual Studio Code.

  2. Navegue até à vista Extensões e pesquise o termo DocumentDB. Localize a extensão DocumentDB para VS Code.

  3. Selecione o botão Instalar para a extensão. Aguarde a conclusão da instalação. Recarregue o Visual Studio Code, se pedido.

  4. Navegue até à extensão DocumentDB selecionando o ícone correspondente na Barra de Atividade.

  5. No painel de Ligações do DocumentDB , selecione + Nova Ligação....

  6. No diálogo, selecione Descoberta de Serviços e depois Azure DocumentDB - Azure Descoberta de Serviços.

  7. Selecione a sua subscrição Azure e o seu cluster Azure DocumentDB recém-criado.

    Sugestão

    Em muitos ambientes corporativos, os endereços IP da máquina do desenvolvedor são ocultos devido a uma VPN ou outras configurações de rede corporativa. Nestes casos, pode permitir temporariamente o acesso a todos os endereços IP adicionando o intervalo 0.0.0.0 - 255.255.255.255 de endereços IP como uma regra de firewall. Use esta regra do firewall apenas temporariamente como parte dos testes e desenvolvimento de ligações. Para obter mais informações, consulte Configurar firewall.

  8. De volta ao painel de Conexões do DocumentDB , expanda o nó do seu cluster e navegue até aos nós existentes de documentos e coleções.

  9. Abra o menu contextual da coleção e depois selecione DocumentDB Scrapbook > New DocumentDB Scrapbook.

  10. Insira os seguintes comandos da Linguagem de Consulta MongoDB (MQL) e depois selecione Executar Tudo. Observe a saída dos comandos.

    db.products.find({
      price: { $gt: 200 },
      sale: true
    })
    .sort({ price: -1 })
    .limit(3)
    

Limpeza de recursos

Quando terminares com o cluster Azure DocumentDB, podes eliminar os recursos Azure que criaste para não incorreres em mais encargos.

  1. Na barra de pesquisa do portal do Azure, procure e selecione Grupos de recursos.

    Opção de captura de ecrã para pesquisar grupos de recursos.

  2. Na lista, selecione o grupo de recursos usado para este início rápido.

    Captura de ecrã a mostrar o grupo de recursos.

  3. Na página do grupo de recursos, selecione Excluir grupo de recursos.

  4. Na caixa de diálogo de confirmação de exclusão, digite o nome do grupo de recursos para confirmar que você pretende excluí-lo. Por fim, selecione Excluir para excluir permanentemente o grupo de recursos.

    Captura de ecrã a mostrar o botão de confirmação de eliminar grupo de recursos.