Een MongoDB-database beheren met JavaScript
VAN TOEPASSING OP: MongoDB
Uw MongoDB-server in Azure Cosmos DB is beschikbaar via de algemene NPM-pakketten voor MongoDB, zoals:
Notitie
De voorbeeldcodefragmenten zijn beschikbaar op GitHub als een JavaScript-project.
Api voor MongoDB-referentiedocumentatie | MongoDB-pakket (npm)
Een database een naam opgeven
In Azure Cosmos DB is een database vergelijkbaar met een naamruimte. Wanneer u een database maakt, vormt de databasenaam een segment van de URI die wordt gebruikt voor toegang tot de databaseresource en eventuele onderliggende resources.
Hier volgen enkele snelle regels bij het benoemen van een database:
Zodra de URI voor een database is gemaakt, heeft deze indeling:
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>
Database-exemplaar ophalen
De database bevat de verzamelingen en hun documenten. Gebruik een exemplaar van de Db
klasse voor toegang tot de databases op de server.
Bij de volgende codefragmenten wordt ervan uitgegaan dat u de clientverbinding al hebt gemaakt en dat u de clientverbinding sluit na deze codefragmenten.
Servergegevens ophalen
Toegang tot de beheerklasse om servergegevens op te halen. U hoeft de databasenaam niet op te geven in de db
methode. De geretourneerde informatie is specifiek voor MongoDB en vertegenwoordigt niet het Azure Cosmos DB-platform zelf.
// 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`)}`);
In het voorgaande codefragment wordt de volgende voorbeeldconsoleuitvoer weergegeven:
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
Bestaat de database?
Het systeemeigen MongoDB-stuurprogramma voor JavaScript maakt de database als deze niet bestaat wanneer u deze opent. Als u liever wilt weten of de database al bestaat voordat u deze gebruikt, haalt u de lijst met huidige databases op en filtert u op de naam:
// 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}`;
}
In het voorgaande codefragment wordt de volgende voorbeeldconsoleuitvoer weergegeven:
Database exists: adventureworks
Lijst met databases, verzamelingen en aantal documenten ophalen
Wanneer u uw MongoDB-server programmatisch beheert, is het handig om te weten welke databases en verzamelingen zich op de server bevinden en hoeveel documenten in elke verzameling.
- 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`);
}
}
In het voorgaande codefragment wordt de volgende voorbeeldconsoleuitvoer weergegeven:
Databases:
adventureworks
Collections:
products: 1 doc(s)
oldmain
Collections:
central: 0 doc(s)
done
Exemplaar van databaseobject ophalen
Als u een exemplaar van een databaseobject wilt ophalen, roept u de volgende methode aan. Deze methode accepteert een optionele databasenaam en kan deel uitmaken van een keten.
Er wordt een database gemaakt wanneer deze wordt geopend. De meest voorkomende manier om toegang te krijgen tot een nieuwe database is door een document toe te voegen aan een verzameling. In één regel code met behulp van gekoppelde objecten worden de database, verzameling en document gemaakt.
const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);
Meer informatie over het werken met verzamelingen en documenten.
Een database verwijderen
Een database wordt verwijderd van de server met behulp van de dropDatabase-methode in de DB-klasse.
// Drop a database, removing it permanently from the server.
const dropDatabase = await client.db("adventureworks").dropDatabase();
console.log(`Drop database:\t${JSON.stringify(dropDatabase)}`);
In het voorgaande codefragment wordt de volgende voorbeeldconsoleuitvoer weergegeven:
Drop database: true
done