Поделиться через


Краткое руководство. Использование Azure Cosmos DB для MongoDB (RU) с Node.js

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

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

Предварительные условия

  • Azure Developer CLI
  • 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';

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

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

Примеры кода

Пример кода в шаблоне использует базу данных с именем cosmicworksproductsи коллекцией. Коллекция 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. Этот метод выполняет операцию "upsert", то есть обновляет или добавляет элемент, фактически заменяя его, если он уже существует.

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