Správa databáze MongoDB pomocí JavaScriptu
PLATÍ PRO: MongoDB
Váš server MongoDB ve službě Azure Cosmos DB je dostupný z běžných balíčků npm pro MongoDB, například:
Poznámka:
Ukázkové fragmenty kódu jsou k dispozici na GitHubu jako projekt JavaScriptu.
Referenční dokumentace | k rozhraní API pro MongoDB (npm)
Pojmenování databáze
Ve službě Azure Cosmos DB je databáze analogická k oboru názvů. Při vytváření databáze tvoří název databáze segment identifikátoru URI, který se používá pro přístup k databázovému prostředku a všem podřízeným prostředkům.
Tady je několik rychlých pravidel při pojmenování databáze:
Po vytvoření je identifikátor URI databáze v tomto formátu:
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>
Získání instance databáze
Databáze obsahuje kolekce a jejich dokumenty. Pro přístup k databázím na serveru použijte instanci Db
třídy.
Následující fragmenty kódu předpokládají, že jste už vytvořili připojení klienta a po těchto fragmentech kódu zavřete připojení klienta.
Získání informací o serveru
Získejte přístup ke třídě Admin a získejte informace o serveru. V metodě nemusíte zadávat název db
databáze. Vrácené informace jsou specifické pro MongoDB a nepředstavují samotnou platformu 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`)}`);
Předchozí fragment kódu zobrazí následující příklad výstupu konzoly:
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
Existuje databáze?
Nativní ovladač MongoDB pro JavaScript vytvoří databázi, pokud neexistuje, když k ní přistupujete. Pokud byste chtěli vědět, jestli už databáze existuje, než ji použijete, získejte seznam aktuálních databází a vyfiltrujte název:
// 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}`;
}
Předchozí fragment kódu zobrazí následující příklad výstupu konzoly:
Database exists: adventureworks
Získání seznamu databází, kolekcí a počtu dokumentů
Při správě serveru MongoDB prostřednictvím kódu programu je užitečné vědět, jaké databáze a kolekce jsou na serveru a kolik dokumentů v každé kolekci je.
- 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`);
}
}
Předchozí fragment kódu zobrazí následující příklad výstupu konzoly:
Databases:
adventureworks
Collections:
products: 1 doc(s)
oldmain
Collections:
central: 0 doc(s)
done
Získání instance databázového objektu
Pokud chcete získat instanci databázového objektu, zavolejte následující metodu. Tato metoda přijímá volitelný název databáze a může být součástí řetězu.
Databáze se vytvoří při přístupu. Nejběžnějším způsobem přístupu k nové databázi je přidání dokumentu do kolekce. V jednom řádku kódu pomocí zřetězených objektů se vytvoří databáze, kolekce a dokument.
const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);
Přečtěte si další informace o práci s kolekcemi a dokumenty.
Vyřazení databáze
Databáze se ze serveru odebere pomocí metody dropDatabase ve třídě 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)}`);
Předchozí fragment kódu zobrazí následující příklad výstupu konzoly:
Drop database: true
done