Управление базой данных MongoDB с помощью JavaScript
Область применения: MongoDB
Сервер MongoDB в Azure Cosmos DB доступен в стандартных пакетах npm для MongoDB, например:
Примечание.
Примеры фрагментов кода доступны на GitHub в виде проекта JavaScript.
Справочная документация | по API для MongoDB Package (npm)
Имя базы данных
В Azure Cosmos DB база данных аналогична пространству имен. При создании базы данных ее имя формирует сегмент URI, используемого для доступа к ресурсу базы данных и любым дочерним ресурсам.
Ниже приведены краткие правила присвоения имен базам данных.
После создания URI базы данных имеет следующий формат:
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>
Получение экземпляра базы данных
База данных содержит коллекции и их документы. Используйте экземпляр Db
класса для доступа к базам данных на сервере.
В следующих фрагментах кода предполагается, что вы уже создали клиентское подключение и закрыли клиентское подключение после этих фрагментов кода.
Получение сведений о сервере
Получите доступ к классу Admin для получения сведений о сервере. В методе db
не нужно указывать имя базы данных. Возвращаемые сведения относятся к MongoDB и не представляют саму платформу 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`)}`);
В приведенном выше фрагменте кода показан следующий пример выходных данных консоли:
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
Существует ли база данных?
Собственный драйвер MongoDB для JavaScript создает базу данных, если она не существует, когда вы к ней обращаетесь. Если перед использованием базы данных вы хотите узнать, существует ли она уже, получите список текущих баз данных и отфильтруйте его по имени:
// 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}`;
}
В приведенном выше фрагменте кода показан следующий пример выходных данных консоли:
Database exists: adventureworks
Получение списка баз данных, коллекций и количества документов
При программном управлении сервером MongoDB полезно знать, какие базы данных и коллекции находятся на сервере, а также сколько документов находится в каждой коллекции.
- 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`);
}
}
В приведенном выше фрагменте кода показан следующий пример выходных данных консоли:
Databases:
adventureworks
Collections:
products: 1 doc(s)
oldmain
Collections:
central: 0 doc(s)
done
Получение экземпляра объекта базы данных
Чтобы получить экземпляр объекта базы данных, вызовите следующий метод. Этот метод принимает необязательное имя базы данных и может быть частью цепочки.
База данных создается при доступе к ней. Наиболее распространенным способом доступа к новой базе данных является добавление документа в коллекцию. В одной строке кода с использованием связанных объектов создаются база данных, коллекция и документация.
const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);
См. дополнительные сведения о работе с коллекциями и документами.
Удаление базы данных
База данных удаляется с сервера с помощью метода dropDatabase класса 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)}`);
В приведенном выше фрагменте кода показан следующий пример выходных данных консоли:
Drop database: true
done