Introduzione ad Azure Cosmos DB per MongoDB con JavaScript

SI APPLICA A: MongoDB

Questo articolo illustra come connettersi ad Azure Cosmos DB per MongoDB usando il pacchetto npm mongoDB nativo. Dopo la connessione, è possibile eseguire operazioni su database, raccolte e documenti.

Nota

I frammenti di codice di esempio sono disponibili in GitHub come progetto JavaScript.

Documentazione di riferimento dell'API per MongoDB | Pacchetto MongoDB (npm)

Prerequisiti

Creare una nuova app JavaScript

  1. Creare una nuova applicazione JavaScript in una cartella vuota usando il terminale preferito. Usare il comando npm init per avviare i prompt per la creazione del file package.json. Accettare le impostazioni predefinite per i prompt.

    npm init
    
  2. Aggiungere il pacchetto npm MongoDB al progetto JavaScript. Usare il comando npm install package che specifica il nome del pacchetto npm. Il pacchetto dotenv viene usato per leggere le variabili di ambiente da un file di .env durante lo sviluppo locale.

    npm install mongodb dotenv
    
  3. Per eseguire l'app, utilizzare un terminale per accedere alla directory dell'applicazione e quindi eseguire l'applicazione.

    node index.js
    

Connessione con il driver nativo MongoDB in Azure Cosmos DB per MongoDB

Per connettersi con il driver nativo MongoDB ad Azure Cosmos DB, creare un'istanza della MongoClient classe . Questa classe è il punto di partenza per eseguire tutte le operazioni sui database.

Il costruttore più comune per MongoClient ha due parametri:

Parametro Valore di esempio Descrizione
url La variabile di ambiente COSMOS_CONNECTION_STRING API per MongoDB stringa di connessione da usare per tutte le richieste
options {ssl: true, tls: true, } Opzioni mongoDB per la connessione.

Vedere la guida alla risoluzione dei problemi di connessione.

Ottenere il nome della risorsa

  1. Creare una variabile di shell per resourceGroupName.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos"
    
  2. Usare il comando az cosmosdb list per recuperare il nome del primo account di Azure Cosmos DB nel gruppo di risorse e archiviarlo nella variabile di shell accountName.

    # Retrieve most recently created account name
    accountName=$(
        az cosmosdb list \
            --resource-group $resourceGroupName \
            --query "[0].name" \
            --output tsv
    )
    

Recuperare la stringa di connessione

  1. Trovare la stringa di connessione dell'API per MongoDB dall'elenco delle stringhe di connessione per l'account con il comando az cosmosdb keys list.

    az cosmosdb keys list --type connection-strings \
        --resource-group $resourceGroupName \
        --name $accountName 
    
  2. Registrare i valori PRIMARY KEY. Queste credenziali saranno necessarie più avanti.

Configurare le variabili di ambiente

Per usare i valori della STRINGA DI CONNESSIONE all'interno del codice, impostare questo valore nell'ambiente locale che esegue l'applicazione. Per impostare la variabile di ambiente, usare il terminale preferito per eseguire i comandi seguenti:

$env:COSMOS_CONNECTION_STRING = "<cosmos-connection-string>"

Creare MongoClient con stringa di connessione

  1. Aggiungere dipendenze per fare riferimento ai pacchetti npm MongoDB e DotEnv.

    // Read .env file and set environment variables
    require('dotenv').config();
    
    // Use official mongodb driver to connect to the server
    const { MongoClient } = require('mongodb');
    
  2. Definire una nuova istanza della MongoClient classe usando il costruttore e process.env. usare il stringa di connessione.

    // New instance of MongoClient with connection string
    // for Cosmos DB
    const url = process.env.COSMOS_CONNECTION_STRING;
    const client = new MongoClient(url);
    
    // connect to the server
    await client.connect();
    
    // client options
    const options = client.options
    console.log(`Options:\n${Object.keys(options).map(key => `\t${key}: ${options[key]}\n`)}`);
    

Per altre informazioni sui diversi modi per creare un'istanza di MongoClient, vedere l'argomento di avvio rapido sul driver MongoDB per NodeJS.

Chiudere la connessione MongoClient

Al termine della connessione, ricordarsi di chiuderla. La .close() chiamata deve essere eseguita dopo tutte le chiamate al database.

client.close()

Usare le classi client MongoDB con Azure Cosmos DB per l'API per MongoDB

Prima di iniziare a compilare l'applicazione, verrà esaminata la gerarchia di risorse in Azure Cosmos DB. Azure Cosmos DB ha un modello a oggetti specifico usato per creare e accedere alle risorse. Azure Cosmos DB crea risorse in una gerarchia costituita da account, database, raccolte e documenti.

Diagramma della gerarchia di Azure Cosmos DB DB, inclusi account, database, raccolte e documenti.

Diagramma gerarchico che mostra un account Azure Cosmos DB nella parte superiore. L'account presenta due nodi database figlio. Uno dei nodi del database include due nodi di raccolta figlio. L'altro nodo del database include un singolo nodo di raccolta figlio. Il nodo di raccolta singolo ha tre nodi della documentazione figlio.

Ogni tipo di risorsa è rappresentato da una o più classi JavaScript associate. Ecco un elenco delle classi più comuni:

Classe Descrizione
MongoClient Questa classe fornisce una rappresentazione logica lato client per il livello API per MongoDB in Azure Cosmos DB. L'oggetto client viene usato per configurare ed eseguire richieste nel servizio.
Db Questa classe è un riferimento a un database che potrebbe esistere o meno nel servizio. Il database viene convalidato lato server quando si tenta di accedervi o di eseguire un'operazione su di esso.
Collection Questa classe è un riferimento a una raccolta che potrebbe non esistere ancora nel servizio. La raccolta viene convalidata sul lato server quando si tenta di usarla.

Nelle guide seguenti viene illustrato come utilizzare ognuna di queste classi per creare l'applicazione.

Guida:

Vedi anche

Passaggi successivi

Dopo aver eseguito la connessione a un account API per MongoDB, usare la guida successiva per creare e gestire i database.