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