Share via


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.

Referentiedocumentatie | voor API voor MongoDBMongoDB-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 voor het benoemen van een database:

  • Databasenamen tussen 3 en 63 tekens lang houden
  • Databasenamen mogen alleen kleine letters, cijfers of het streepje (-) bevatten.
  • Databasenamen moeten beginnen met een kleine letter of cijfer.

Nadat 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 de bijbehorende documenten. Gebruik een exemplaar van de Db klasse voor toegang tot de databases op de server.

In de volgende codefragmenten wordt ervan uitgegaan dat u de clientverbinding al hebt gemaakt en dat u de clientverbinding na deze codefragmenten sluit.

Servergegevens ophalen

Open de klasse Beheer 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 voorbeeldconsole-uitvoer 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 voorbeeldconsole-uitvoer 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.

// 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 voorbeeldconsole-uitvoer weergegeven:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Exemplaar van databaseobject ophalen

Roep de volgende methode aan om een databaseobjectexemplaren op te halen. 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 die gebruikmaakt van gekoppelde objecten, worden de database, de verzameling en het 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 van de server verwijderd met behulp van de methode dropDatabase 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 voorbeeldconsole-uitvoer weergegeven:

Drop database:  true
done

Zie ook