Gérer une base de données MongoDB à l’aide de JavaScript
S’APPLIQUE À : MongoDB
Votre serveur MongoDB dans Azure Cosmos DB est disponible à partir des packages npm courants pour MongoDB tels que :
Notes
Les exemples d’extraits de code sont disponibles sur GitHub sous la forme d’un projet JavaScript.
Documentation de référence de l’API pour MongoDB | Package MongoDB (npm)
Nommer une base de données
Dans Azure Cosmos DB, une base de données est analogue à un espace de noms. Lorsque vous créez une base de données, le nom de la base de données forme un segment de l’URI utilisé pour accéder à la ressource de base de données et à toutes les ressources enfants.
Voici quelques règles rapides lors de l’affectation d’un nom à une base de données :
Une fois créé, l’URI d’une base de données est au format suivant :
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>
Obtenir une instance de base de données
La base de données contient les collections et leurs documents. Utilisez une instance de la classe Db
pour accéder aux bases de données sur le serveur.
Les extraits de code suivants supposent que vous avez déjà créé votre connexion client et que vous fermez votre connexion client après ces extraits de code.
Obtenir les informations du serveur
Accédez à la classe Administration pour récupérer les informations du serveur. Vous n’avez pas besoin de spécifier le nom de la base de données dans la méthode db
. Les informations retournées sont spécifiques à MongoDB et ne représentent pas la plateforme Azure Cosmos DB elle-même.
// 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`)}`);
L’extrait de code précédent affiche l’exemple de sortie de console suivant :
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
La base de données existe-t-elle ?
Le pilote MongoDB natif pour JavaScript crée la base de données si elle n’existe pas lorsque vous y accédez. Si vous préférez savoir si la base de données existe déjà avant de l’utiliser, obtenez la liste des bases de données actuelles et filtrez le nom :
// 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}`;
}
L’extrait de code précédent affiche l’exemple de sortie de console suivant :
Database exists: adventureworks
Obtenir la liste des bases de données, des collections et le nombre de documents
Lorsque vous gérez votre serveur MongoDB par programmation, il est utile de savoir quelles bases de données et collections sont sur le serveur et le nombre de documents de chaque collection.
- 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`);
}
}
L’extrait de code précédent affiche l’exemple de sortie de console suivant :
Databases:
adventureworks
Collections:
products: 1 doc(s)
oldmain
Collections:
central: 0 doc(s)
done
Obtenir une instance d’objet de base de données
Pour obtenir une instance d’objet de base de données, appelez la méthode suivante. Cette méthode accepte un nom de base de données facultatif et peut faire partie d’une chaîne.
Une base de données est créée au moment où elle doit être accessible. La façon la plus courante d’accéder à une nouvelle base de données consiste à ajouter un document à une collection. Dans une ligne de code utilisant des objets chaînés, la base de données, la collection et la documentation sont créées.
const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);
Apprenez-en plus sur l’utilisation de collections et de documents.
Déposer une base de données
Une base de données est supprimée du serveur à l’aide de la méthode dropDatabase sur la classe de base de données.
// Drop a database, removing it permanently from the server.
const dropDatabase = await client.db("adventureworks").dropDatabase();
console.log(`Drop database:\t${JSON.stringify(dropDatabase)}`);
L’extrait de code précédent affiche l’exemple de sortie de console suivant :
Drop database: true
done