Быстрый старт: Использование Azure Cosmos DB для MongoDB с помощью Node.js

Important

Вы хотите перенести существующее приложение MongoDB или использовать функции языка запросов MongoDB (MQL)? Рассмотрим Azure DocumentDB.

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для MongoDB с помощью Python. Azure Cosmos DB для MongoDB — это хранилище данных без схемы, позволяющее приложениям хранить неструктурированные документы в облаке с помощью библиотек MongoDB. Вы узнаете, как создавать документы и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью Python.

Исходный код библиотеки | Пакет (npm) | Azure Developer CLI

Предпосылки

  • Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
  • Docker Desktop
  • Node.js 22 или более поздней версии

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Инициализация проекта

Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентскую библиотеку для управления, создания, чтения и выполнения запросов к образцам данных.

  1. Откройте терминал в пустом каталоге.

  2. Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью azd auth login. Следуйте инструкциям, указанным инструментом, чтобы выполнить аутентификацию в CLI, используя ваши предпочитаемые учетные данные Azure.

    azd auth login
    
  3. Используйте azd init для инициализации проекта.

    azd init --template cosmos-db-mongodb-nodejs-quickstart
    
  4. Во время инициализации настройте уникальное имя среды.

  5. Разверните учетную запись Azure Cosmos DB с помощью azd up. Шаблоны Bicep также развертывают образец веб-приложения.

    azd up
    
  6. В процессе подготовки выберите вашу подписку, желаемое местоположение и целевую группу ресурсов. Дождитесь завершения процесса настройки. Процесс может занять около пяти минут.

  7. После завершения подготовки ресурсов Azure в выходные данные включён URL-адрес работающего веб-приложения.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.

Снимок экрана: работающее веб-приложение.

Снимок экрана: работающее веб-приложение.

Установка клиентской библиотеки

Клиентская библиотека доступна через npm в виде mongodb пакета.

  1. Откройте терминал и перейдите в папку /src/ts .

    cd ./src/ts
    
  2. Если mongodb еще не установлен, установите пакет с помощью npm install.

    npm install --save mongodb
    
  3. Откройте и просмотрите файл src/ts/package.json , чтобы убедиться, что запись mongodb существует.

  1. Откройте терминал и перейдите в папку /src/js .

    cd ./src/js
    
  2. Если mongodb еще не установлен, установите пакет с помощью npm install.

    npm install --save mongodb
    
  3. Откройте и просмотрите файл src/js/package.json , чтобы убедиться, что запись mongodb существует.

Импорт библиотек

Импортируйте тип MongoClient в код вашего приложения.

import { MongoClient } from 'mongodb';

Импортируйте все необходимые типы в код приложения.

import { Collection, Db, Filter, FindCursor, MongoClient, UpdateFilter, UpdateOptions, UpdateResult, WithId } from 'mongodb';

Объектная модель

Name Description
MongoClient Тип, используемый для подключения к MongoDB.
Database Представляет базу данных в учетной записи.
Collection Представляет коллекцию в базе данных в учетной записи.

Примеры кода

Пример кода в шаблоне использует базу данных с именем cosmicworks и коллекцию с именем products. Коллекция products содержит такие сведения, как имя, категория, количество и уникальный идентификатор для каждого продукта. Коллекция использует /category свойство в качестве ключа шардирования.

аутентификация клиента;

В этом примере создается новый экземпляр MongoClient типа.

const connectionString = "<azure-cosmos-db-for-mongodb-connection-string>";

const client = new MongoClient(connectionString);
const connectionString = "<azure-cosmos-db-for-mongodb-connection-string>";

const client = new MongoClient(connectionString);

Получение базы данных

В этом примере экземпляр типа Db создается с помощью функции db типа MongoClient.

const database: Db = client.db("<database-name>");
const database = client.db("<database-name>");

Получите коллекцию

В этом примере экземпляр типа Collection создается с помощью функции collection типа Db.

Эта функция имеет универсальный параметр, который использует тип Product, определённый в интерфейсе.

const collection: Collection<Product> = database.collection<Product>("<collection-name>");
export interface Product {
    _id: string;
    category: string;
    name: string;
    quantity: number;
    price: number;
    clearance: boolean;
}
const collection = database.collection("<collection-name>");

Создание документа

Создайте документ в коллекции с помощью collection.updateOne. Этот метод "вставляет или обновляет" элемент, фактически заменяя элемент, если он уже существует.

var document: Product = {
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    category: 'gear-surf-surfboards',
    name: 'Yamba Surfboard',
    quantity: 12,
    price: 850.00,
    clearance: false
};

var query: Filter<Product> = {
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    category: 'gear-surf-surfboards'
};
var payload: UpdateFilter<Product> = {
    $set: document
};
var options: UpdateOptions = {
    upsert: true
};
var response: UpdateResult<Product> = await collection.updateOne(query, payload, options);
var document = {
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    category: 'gear-surf-surfboards',
    name: 'Yamba Surfboard',
    quantity: 12,
    price: 850.00,
    clearance: false
};

const query = {
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
    category: 'gear-surf-surfboards'
};
const payload = {
    $set: document
};
const options = {
    upsert: true,
    new: true
};
var response = await collection.updateOne(query, payload, options);

Чтение документа

Выполните операцию точечного чтения, используя поля уникального идентификатора (id) и ключа сегментов. Используйте collection.findOne, чтобы эффективно получить конкретный элемент.

var query: Filter<Product> = { 
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 
    category: 'gear-surf-surfboards' 
};

var response: WithId<Product> | null = await collection.findOne(query);
var query = { 
    _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', 
    category: 'gear-surf-surfboards' 
};

var response = await collection.findOne(query);

Поиск документов

Выполнение запроса по нескольким элементам в контейнере с помощью collection.find. Этот запрос находит все элементы в пределах указанной категории (шард-ключ).

var query: Filter<Product> = { 
    category: 'gear-surf-surfboards' 
};

var response: FindCursor<WithId<Product>> = await collection.find(query);
for await (const item of response) {
    // Do something with each item
}
var query = { 
    category: 'gear-surf-surfboards' 
};

var response = await collection.find(query);
for await (const item of response) {
    // Do something with each item
}

Изучите свои данные

Используйте расширение Visual Studio Code для Azure Cosmos DB для изучения данных MongoDB. Вы можете выполнять основные операции с базой данных, включая, но не ограничиваясь:

  • Выполнение запросов с помощью книги заметок или редактора запросов
  • Изменение, обновление, создание и удаление документов
  • Импорт массовых данных из других источников
  • Управление базами данных и коллекциями

Дополнительные сведения см. в руководстве по использованию расширения Visual Studio Code для изучения данных Azure Cosmos DB для MongoDB.

Очистите ресурсы

Когда вы больше не нуждаетесь в демонстрационном приложении или ресурсах, удалите соответствующее развертывание и все ресурсы.

azd down --force --purge