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