Краткое руководство. Использование 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 для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентская библиотека для управления, создания, чтения и запроса примеров данных.
Откройте терминал в пустом каталоге.
Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью
azd auth login
. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.azd auth login
Используется
azd init
для инициализации проекта.azd init --template cosmos-db-mongodb-nodejs-quickstart
Во время инициализации настройте уникальное имя среды.
Разверните учетную запись Azure Cosmos DB с помощью
azd up
. Шаблоны Bicep также развертывают пример веб-приложения.azd up
В процессе подготовки выберите подписку, требуемое расположение и целевую группу ресурсов. Дождитесь завершения процесса подготовки. Процесс может занять около пяти минут.
После завершения подготовки ресурсов 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.
Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.
Установка клиентской библиотеки
Клиентская библиотека доступна через npm в виде mongodb
пакета.
Откройте терминал и перейдите в папку
/src/ts
.cd ./src/ts
Если пакет еще не установлен, установите
mongodb
его с помощьюnpm install
.npm install --save mongodb
Откройте и просмотрите файл src/ts/package.json , чтобы убедиться, что запись
mongodb
существует.
Откройте терминал и перейдите в папку
/src/js
.cd ./src/js
Если пакет еще не установлен, установите
mongodb
его с помощьюnpm install
.npm install --save mongodb
Откройте и просмотрите файл src/js/package.json , чтобы убедиться, что запись
mongodb
существует.
Объектная модель
Имя | Описание |
---|---|
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
. Этот метод "upserts" элемент фактически заменяет элемент, если он уже существует.
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