Partilhar via


Gerenciar um banco de dados MongoDB usando JavaScript

APLICA-SE A: MongoDB

Seu servidor MongoDB no Azure Cosmos DB está disponível nos pacotes npm comuns para MongoDB, como:

Nota

Os trechos de código de exemplo estão disponíveis no GitHub como um projeto JavaScript.

Documentação | de referência da API para MongoDB Pacote MongoDB (npm)

Nomear um banco de dados

No Azure Cosmos DB, um banco de dados é análogo a um namespace. Quando você cria um banco de dados, o nome do banco de dados forma um segmento do URI usado para acessar o recurso de banco de dados e quaisquer recursos filho.

Aqui estão algumas regras rápidas ao nomear um banco de dados:

  • Manter nomes de banco de dados entre 3 e 63 caracteres
  • Os nomes dos bancos de dados só podem conter letras minúsculas, números ou o caractere traço (-).
  • Os nomes dos bancos de dados devem começar com uma letra ou número minúsculo.

Uma vez criado, o URI de um banco de dados está neste formato:

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

Obter instância de banco de dados

A base de dados contém as coleções e os seus documentos. Use uma instância da Db classe para acessar os bancos de dados no servidor.

Os trechos de código a seguir pressupõem que você já criou sua conexão de cliente e que fecha sua conexão de cliente após esses trechos de código.

Obter informações do servidor

Acesse a classe Admin para recuperar informações do servidor. Não é necessário especificar o nome do db banco de dados no método. As informações retornadas são específicas do MongoDB e não representam a plataforma Azure Cosmos DB em si.

// 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`)}`);

O trecho de código anterior exibe a seguinte saída de console de exemplo:

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

Existe base de dados?

O driver MongoDB nativo para JavaScript cria o banco de dados se ele não existir quando você acessá-lo. Se preferir saber se o banco de dados já existe antes de usá-lo, obtenha a lista de bancos de dados atuais e filtre pelo nome:

// 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}`;
}

O trecho de código anterior exibe a seguinte saída de console de exemplo:

Database exists:        adventureworks

Obter lista de bancos de dados, coleções e contagem de documentos

Quando você gerencia seu servidor MongoDB programaticamente, é útil saber quais bancos de dados e coleções estão no servidor e quantos documentos em cada coleção.

// 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`);
  }
}

O trecho de código anterior exibe a seguinte saída de console de exemplo:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Obter instância de objeto de banco de dados

Para obter uma instância de objeto de banco de dados, chame o seguinte método. Esse método aceita um nome de banco de dados opcional e pode fazer parte de uma cadeia.

Um banco de dados é criado quando é acessado. A maneira mais comum de acessar um novo banco de dados é adicionar um documento a uma coleção. Em uma linha de código usando objetos encadeados, o banco de dados, a coleção e o documento são criados.

const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);

Saiba mais sobre como trabalhar com coleções e documentos.

Soltar um banco de dados

Um banco de dados é removido do servidor usando o método dropDatabase na classe DB.

// Drop a database, removing it permanently from the server.
const dropDatabase = await client.db("adventureworks").dropDatabase();
console.log(`Drop database:\t${JSON.stringify(dropDatabase)}`);

O trecho de código anterior exibe a seguinte saída de console de exemplo:

Drop database:  true
done

Consulte também