Partager via


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 :

  • Le nom de la base de données doit avoir entre 3 et 63 caractères
  • Les noms de base de données ne peuvent contenir que des lettres minuscules, des chiffres ou le caractère de tiret (-).
  • Le nom de la base de données doit commencer par une lettre minuscule ou un chiffre.

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.

// 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

Voir aussi