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.
- MongoClient.Db.Admin.listDatabases
- MongoClient.Db.listCollections
- MongoClient.Db.Collection
- MongoClient.Db.Collection.countDocuments
// 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