Freigeben über


Verwalten einer MongoDB-Datenbank mithilfe von JavaScript

GILT FÜR: MongoDB

Der MongoDB-Server in Azure Cosmos DB ist in den üblichen npm Paketen für MongoDB verfügbar, z. B.:

Hinweis

Die Beispielcodeausschnitte sind auf GitHub als JavaScript-Projekt verfügbar.

„API für MongoDB“-Referenzdokumentation | MongoDB-Paket (npm)

Benennen einer Datenbank

In Azure Cosmos DB ist eine Datenbank analog zu einem Namespace. Wenn Sie eine Datenbank erstellen, bildet der Datenbankname ein Segment des URI, der für den Zugriff auf die Datenbankressource und alle untergeordneten Ressourcen verwendet wird.

Hier sind einige schnelle Regeln für das Benennen einer Datenbank:

Nach der Erstellung weist der URI für eine Datenbank das folgende Format auf:

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

Abrufen der Datenbankinstanz

Die Datenbank enthält die Sammlungen und die zugehörigen Dokumente. Verwenden Sie eine Instanz der Db-Klasse, um auf die Datenbanken auf dem Server zuzugreifen.

In den folgenden Codeschnipseln wird davon ausgegangen, dass Sie die Clientverbindung bereits erstellt haben und die Clientverbindung nach diesen Codeschnipseln schließen.

Abrufen von Serverinformationen

Greifen Sie auf die Admin-Klasse zu, um Serverinformationen abzurufen. Sie brauchen den Datenbanknamen nicht in der db-Methode anzugeben. Die zurückgegebenen Informationen beziehen sich ausschließlich auf MongoDB und nicht auf die eigentliche Azure Cosmos DB-Plattform.

// Get server build info
const serverInfo = await client.db().admin().serverInfo();
console.log(`Server info:\n${Object.keys(serverInfo).map(key => `\t${key}: ${serverInfo[key]}\n`)}`);

// Get server status
const serverStatus = await client.db().admin().serverStatus();
console.log(`Server status:\n${Object.keys(serverStatus).map(key => `\t${key}: ${serverStatus[key]}\n`)}`);

// List all databases
const dbListResult = await client.db().admin().listDatabases();
console.log(`Databases:\n${dbListResult.databases.map(db => `\t${db.name}\n`)}`);

Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:

Server info:
        version: 4.0.0
,       versionArray: 4,0,0,0
,       bits: 64
,       maxBsonObjectSize: 16777216
,       ok: 1

Server status:
        ok: 1

Databases:
        adventureworks
,       oldmain

done

Ist die Datenbank vorhanden?

Der native MongoDB-Treiber für JavaScript erstellt die Datenbank, falls sie nicht vorhanden ist, wenn Sie darauf zugreifen. Wenn Sie feststellen möchten, ob die Datenbank bereits vorhanden ist, bevor sie verwendet wird, rufen Sie die Liste der aktuellen Datenbanken ab, und filtern Sie nach dem Namen:

// Get list of databases
const listResult = await client.db().admin().listDatabases();
if(listResult.databases.length === 0) {
  return 'No databases found';
}

// does database exist
const lookForDatabase = 'adventureworks';
const dbFound = listResult.databases.find(db => db.name===lookForDatabase).toArray();
if(dbFound) {
  return `Database exists:\t${lookForDatabase}`;
}

Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:

Database exists:        adventureworks

Abrufen der Datenbankliste, Sammlungen und Dokumentanzahl

Wenn Sie Ihren MongoDB-Server programmgesteuert verwalten, ist es hilfreich, zu wissen, welche Datenbanken und Sammlungen auf dem Server und wie viele Dokumente in den einzelnen Sammlungen vorhanden sind.

// get list of databases
const listResult = await client.db().admin().listDatabases();
console.log("Databases:\n");

// loop through databases
for await (let database of listResult.databases) {

  console.log(`\t${database.name}\n`);

  // get database client
  const dbClient = client.db(database.name);

  // get collections in database
  const collections = await dbClient.listCollections();
  console.log("\n\t\tCollections:\n");

  // loop through collections
  for await (let collection of collections) {
    
    // get collection client
    const collectionClient = dbClient.collection(collection.name);

    // get doc count of collection
    const docCount = await collectionClient.countDocuments({});
    console.log(`\t\t\t${collection.name}: ${docCount} doc(s)\n`);
  }
}

Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Abrufen der Datenbankobjektinstanz

Rufen Sie zum Abrufen einer Datenbankobjektinstanz die folgende Methode auf. Diese Methode akzeptiert einen optionalen Datenbanknamen und kann Teil einer Kette sein.

Eine Datenbank wird erstellt, wenn darauf zugegriffen wird. Die gebräuchlichste Möglichkeit, auf eine neue Datenbank zuzugreifen, besteht darin, ein Dokument zu einer Sammlung hinzuzufügen. In einer Codezeile mit verketteten Objekten werden die Datenbank, die Sammlung und das Dokument erstellt.

const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);

Erfahren Sie mehr über die Verwendung von Sammlungen und Dokumenten.

Löschen einer Datenbank

Eine Datenbank wird mit der dropDatabase-Methode in der DB-Klasse vom Server entfernt.

// Drop a database, removing it permanently from the server.
const dropDatabase = await client.db("adventureworks").dropDatabase();
console.log(`Drop database:\t${JSON.stringify(dropDatabase)}`);

Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:

Drop database:  true
done

Siehe auch