Udostępnij za pośrednictwem


Zarządzanie bazą danych MongoDB przy użyciu języka JavaScript

DOTYCZY: MongoDB

Serwer MongoDB w usłudze Azure Cosmos DB jest dostępny z popularnych pakietów npm dla bazy danych MongoDB, takich jak:

Uwaga

Przykładowe fragmenty kodu są dostępne w witrynie GitHub jako projekt JavaScript.

Dokumentacja referencyjna interfejsu API dla bazy danych | MongoDB — pakiet MongoDB (npm)

Nazwij bazę danych

W usłudze Azure Cosmos DB baza danych jest analogiczna do przestrzeni nazw. Podczas tworzenia bazy danych nazwa bazy danych tworzy segment identyfikatora URI używanego do uzyskiwania dostępu do zasobu bazy danych i wszystkich zasobów podrzędnych.

Poniżej przedstawiono kilka szybkich reguł podczas nazewnictwa bazy danych:

Po utworzeniu identyfikator URI bazy danych ma następujący format:

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

Pobieranie wystąpienia bazy danych

Baza danych przechowuje kolekcje i ich dokumenty. Użyj wystąpienia klasy, Db aby uzyskać dostęp do baz danych na serwerze.

W poniższych fragmentach kodu przyjęto założenie, że połączenie klienta zostało już utworzone i zamknięcie połączenia klienta po fragmentach kodu.

Pobieranie informacji o serwerze

Uzyskaj dostęp do klasy Administrator, aby pobrać informacje o serwerze. Nie musisz określać nazwy bazy danych w metodzie db . Zwrócone informacje są specyficzne dla bazy danych MongoDB i nie reprezentują samej platformy usługi Azure Cosmos DB.

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

Powyższy fragment kodu wyświetla następujące przykładowe dane wyjściowe konsoli:

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

Czy baza danych istnieje?

Natywny sterownik bazy danych MongoDB dla języka JavaScript tworzy bazę danych, jeśli nie istnieje, gdy uzyskujesz do niej dostęp. Jeśli wolisz wiedzieć, czy baza danych już istnieje przed jej użyciem, pobierz listę bieżących baz danych i filtruj nazwę:

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

Powyższy fragment kodu wyświetla następujące przykładowe dane wyjściowe konsoli:

Database exists:        adventureworks

Pobieranie listy baz danych, kolekcji i liczby dokumentów

Podczas programowego zarządzania serwerem Bazy danych MongoDB warto wiedzieć, jakie bazy danych i kolekcje znajdują się na serwerze oraz ile dokumentów w każdej kolekcji.

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

Powyższy fragment kodu wyświetla następujące przykładowe dane wyjściowe konsoli:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Pobieranie wystąpienia obiektu bazy danych

Aby uzyskać wystąpienie obiektu bazy danych, wywołaj następującą metodę. Ta metoda akceptuje opcjonalną nazwę bazy danych i może być częścią łańcucha.

Baza danych jest tworzona po korzystaniu z niej. Najczęstszym sposobem uzyskania dostępu do nowej bazy danych jest dodanie dokumentu do kolekcji. W jednym wierszu kodu przy użyciu obiektów łańcuchowych tworzona jest baza danych, kolekcja i dokument.

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

Dowiedz się więcej o pracy z kolekcjami i dokumentami.

Usuwanie bazy danych

Baza danych jest usuwana z serwera przy użyciu metody dropDatabase w klasie 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)}`);

Powyższy fragment kodu wyświetla następujące przykładowe dane wyjściowe konsoli:

Drop database:  true
done

Zobacz też