Управление базой данных MongoDB с помощью JavaScript

ПРИМЕНИМО К: Mongodb

Сервер MongoDB в Azure Cosmos DB доступен в стандартных пакетах npm для MongoDB, например:

Примечание

Примеры фрагментов кода доступны на GitHub в виде проекта JavaScript.

Справочная документация | по API для MongoDBПакет MongoDB (npm)

Имя базы данных

В Azure Cosmos DB база данных аналогична пространству имен. При создании базы данных ее имя формирует сегмент URI, используемого для доступа к ресурсу базы данных и любым дочерним ресурсам.

Ниже приведены краткие правила присвоения имен базам данных.

  • Имена контейнеров могут содержать от 3 до 63 символов
  • Имена контейнеров могут содержать только строчные буквы, цифры или дефис (-).
  • Имя контейнера должно начинаться со строчной буквы или цифры.

После создания 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 полезно знать, какие базы данных и коллекции находятся на сервере, а также сколько документов находится в каждой коллекции.

// 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

См. также раздел