API Azure Cosmos DB для MongoDB (версии 3.6) — поддержка возможностей и синтаксиса

ПРИМЕНИМО К: API Azure Cosmos DB для MongoDB

Azure Cosmos DB — это глобально распределенная многомодельная служба базы данных Майкрософт. С API Azure Cosmos DB для MongoDB можно взаимодействовать, используя любой из драйверов с открытым кодом для клиента MongoDB. API Azure Cosmos DB для MongoDB позволяет использовать имеющиеся драйверы клиента благодаря сетевому протоколу MongoDB.

С помощью API Azure Cosmos DB для MongoDB вы можете пользоваться всеми функциями MongoDB, к которым вы привыкли, и возможностями Cosmos DB для организаций: глобальное распространение, автоматическое сегментирование, гарантии по уровням доступности и задержкам, шифрование неактивных данных, резервное копирование и многое другое.

Примечание

Для версии API Cosmos DB 3.6 для MongoDB в настоящий момент отсутствуют планы по прекращению поддержки (EOL). Мы сообщаем о будущем прекращении поддержки не менее чем за три года.

Поддержка протоколов

API Azure Cosmos DB для MongoDB совместим с сервером MongoDB версии 3.6 по умолчанию для новых учетных записей. Ниже перечислены поддерживаемые операторы, а также ограничения и исключения. Любой драйвер клиента, который распознает эти протоколы, должен иметь возможность подключения к API Azure Cosmos DB для MongoDB. Обратите внимание, что при использовании API Azure Cosmos DB для учетных записей MongoDB учетные записи версии 3.6 будут иметь конечную точку в формате *.mongo.cosmos.azure.com, в то время как в версии 3.2 конечная точка будет в формате *.documents.azure.com.

Поддержка языка запросов

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

Примечание

В этой статье приведены только поддерживаемые серверные команды и не указаны функции-оболочки на стороне клиента. Функции-оболочки на стороне клиента, такие как deleteMany() и updateMany(), внутренне используют серверные команды delete() и update(). Функции, использующие поддерживаемые серверные команды, совместимы с API Azure Cosmos DB для MongoDB.

Команды базы данных

API Azure Cosmos DB для MongoDB поддерживает приведенные ниже команды базы данных.

Команды для запросов и записи

Get-Help Поддерживается
потоки изменений Да
удалить Да
eval Нет
поиск Да
findAndModify Да
getLastError Да
getMore Да
getPrevError нет
insert Да
parallelCollectionScan Нет
resetError нет
обновить Да

Команды для аутентификации

Get-Help Поддерживается
authenticate Да
getnonce Да
logout Да

Команды для администрирования

Get-Help Поддерживается
cloneCollectionAsCapped нет
collMod нет
connectionStatus нет
convertToCapped нет
copydb нет
create Да
createIndexes Да
currentOp Да
drop Да
dropDatabase Да
dropIndexes Да
filemd5 Да
killCursors Да
killOp нет
listCollections Да
listDatabases Да
listIndexes Да
reIndex Да
renameCollection нет

Команды для диагностики

Get-Help Поддерживается
buildInfo Да
collStats Да
connPoolStats нет
connectionStatus нет
dataSize нет
dbHash нет
dbStats Да
explain Да
features нет
hostInfo Да
listDatabases Да
listCommands нет
профилировщик нет
serverStatus нет
top нет
whatsmyuri Да

Конвейер статистической обработки

Команды статистической обработки

Get-Help Поддерживается
статистическое выражение Да
count Да
distinct Да
mapReduce нет

Этапы статистической обработки

Get-Help Поддерживается
$addFields Да
$bucket нет
$bucketAuto нет
$changeStream Да
$collStats нет
$count Да
$currentOp нет
$facet Да
$geoNear Да
$graphLookup Да
$group Да
$indexStats нет
$limit Да
$listLocalSessions нет
$listSessions нет
$lookup Частично
$match Да
$out Да
$project Да
$redact Да
$replaceRoot Да
$replaceWith Нет
$sample Да
$skip Да
$sort Да
$sortByCount Да
$unwind Да

Примечание

$lookup пока не поддерживает функцию некоррелированных вложенных запросов, появившуюся в версии Server 3.6. При попытке использовать $lookup оператор с полями let и pipeline вы получите сообщение об ошибке, содержащее let is not supported.

Логические выражения

Get-Help Поддерживается
$and Да
$not Да
$or Да

Выражения для наборов

Get-Help Поддерживается
$setEquals Да
$setIntersection Да
$setUnion Да
$setDifference Да
$setIsSubset Да
$anyElementTrue Да
$allElementsTrue Да

Выражения сравнения

Примечание

API для MongoDB не поддерживает выражения сравнения с литералом массива в запросе.

Get-Help Поддерживается
$cmp Да
$eq Да
$gt Да
$gte Да
$lt Да
$lte Да
$ne Да
$in Да
$nin Да

Арифметические выражения

Get-Help Поддерживается
$abs Да
$add Да
$ceil Да
$divide Да
$exp Да
$floor Да
$ln Да
$log Да
$log10 Да
$mod Да
$multiply Да
$pow Да
$sqrt Да
$subtract Да
$trunc Да

Строковые выражения

Get-Help Поддерживается
$concat Да
$indexOfBytes Да
$indexOfCP Да
$split Да
$strLenBytes Да
$strLenCP Да
$strcasecmp Да
$substr Да
$substrBytes Да
$substrCP Да
$toLower Да
$toUpper Да

Оператор поиска в тексте

Get-Help Поддерживается
$meta нет

Выражения для массивов

Get-Help Поддерживается
$arrayElemAt Да
$arrayToObject Да
$concatArrays Да
$filter Да
$indexOfArray Да
$isArray Да
$objectToArray Да
$range Да
$reverseArray Да
$reduce Да
$size Да
$slice Да
$zip Да
$in Да

Операторы переменных

Get-Help Поддерживается
$map Да
$let Да

Системные переменные

Get-Help Поддерживается
$$CURRENT Да
$$DESCEND Да
$$KEEP Да
$$PRUNE Да
$$REMOVE Да
$$ROOT Да

Литеральный оператор

Get-Help Поддерживается
$literal Да

Выражения для дат

Get-Help Поддерживается
$dayOfYear Да
$dayOfMonth Да
$dayOfWeek Да
$year Да
$month Да
$week Да
$hour Да
$minute Да
$second Да
$millisecond Да
$dateToString Да
$isoDayOfWeek Да
$isoWeek Да
$dateFromParts Да
$dateToParts Да
$dateFromString Да
$isoWeekYear Да

Условные выражения

Get-Help Поддерживается
$cond Да
$ifNull Да
$switch Да

Оператор типа данных

Get-Help Поддерживается
$type Да

Выражения аккумулятора

Get-Help Поддерживается
$sum Да
$avg Да
$first Да
$last Да
$max Да
$min Да
$push Да
$addToSet Да
$stdDevPop Да
$stdDevSamp Да

Оператор объединения

Get-Help Поддерживается
$mergeObjects Да

Типы данных

Get-Help Поддерживается
Double Да
Строка Да
Объект Да
Array Да
Binary Data Да
ObjectId Да
Логическое Да
Дата Да
NULL Да
32-разрядное целое число (цч) Да
Отметка времени Да
64-разрядное целое число (длинное) Да
MinKey Да
MaxKey Да
Decimal128 Да
Регулярное выражение Да
JavaScript Да
JavaScript (с инструкциями SCOPE) Да
Не определено. Да

Индексы и свойства индекса

Индексы

Get-Help Поддерживается
Индекс одного поля Да
Составной индекс Да
Многоключевой индекс Да
Текстовый индекс нет
2dsphere Да
Двухмерный индекс нет
Хэшированный индекс Да

Свойства индекса

Get-Help Поддерживается
Срок жизни Да
Уникальная идентификация Да
Частично нет
Без учета регистра нет
разреженные; нет
Историческая справка Да

Операторы

Логические операторы

Get-Help Поддерживается
$or Да
$and Да
$not Да
$nor Да

Операторы элементов

Get-Help Поддерживается
$exists Да
$type Да

Операторы запросов вычисления

Get-Help Поддерживается
$expr нет
$jsonSchema нет
$mod Да
$regex Да
$text Нет (не поддерживается. Вместо этого используйте $regex.)
$where нет

В запросах $regex выражения, привязанные слева, поддерживают поиск по индексу. Но если добавить модификатор i (отключение учета регистра) и m (многостроковое выражение), коллекция будет проверяться во всех выражениях.

Если есть необходимость включить $ или |, желательно создать два (или более) запроса regex. Например, исходный запрос вида find({x:{$regex: /^abc$/}) следует изменить следующим образом:

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

Тогда первая часть будет использовать индекс, чтобы ограничить поиск только теми документами, имя которых начинается со стороки ^abc, а вторая часть будет проверять соответствие строк. Оператор вертикальной черты | действует как функция or. Например, запрос find({x:{$regex: /^abc |^def/}) отбирает документы, в которых значение поля x начинается со строк abc или def. Чтобы использовать индекс, мы рекомендуем разбивать запрос на два разных запроса, соединенных оператором $or, вот так: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Операторы массива

Get-Help Поддерживается
$all Да
$elemMatch Да
$size Да

Оператор комментариев

Get-Help Поддерживается
$comment Да

Операторы проецирования

Get-Help Поддерживается
$elemMatch Да
$meta нет
$slice Да

Обновление операторов

Операторы обновления полей

Get-Help Поддерживается
$inc Да
$mul Да
$rename Да
$setOnInsert Да
$set Да
$ не задано Да
$min Да
$max Да
$currentDate Да

Операторы обновления массивов

Get-Help Поддерживается
$ Да
$[] Да
$[<identifier>] Да
$addToSet Да
$pop Да
$pullAll Да
$pull Да
$push Да
$pushAll Да

Модификаторы обновления

Get-Help Поддерживается
$each Да
$slice Да
$sort Да
$position Да

Оператор побитового обновления

Get-Help Поддерживается
$bit Да
$bitsAllSet нет
$bitsAnySet нет
$bitsAllClear нет
$bitsAnyClear нет

Геопространственные операторы

Оператор Поддерживается
$geoWithin Да
$geoIntersects Да
$near Да
$nearSphere Да
$geometry Да
$minDistance Да
$maxDistance Да
$center Нет
$centerSphere Нет
$box Нет
$polygon Нет

Сортирование операций

При использовании операции findOneAndUpdate поддерживается сортировка операций по одному полю, а по нескольким полям — нет.

Индексация

API для MongoDB поддерживает различные индексы, позволяющие выполнять сортировку по нескольким полям, улучшить эффективность запросов и обеспечить уникальность.

GridFS

Azure Cosmos DB поддерживает GridFS через любой драйвер MongoDB, совместимый с GridFS.

Репликация

Cosmos DB поддерживает собственный механизм автоматической репликации на самых нижних уровнях. Этот механизм применяется и для организации глобальной репликации с низкой задержкой. Cosmos DB не поддерживает запуск или настройку репликации вручную.

Повторяемые операции записи

Azure Cosmos DB пока не поддерживает повторяемые операции записи. Клиентские драйверы должны добавить retryWrites=false их в строку подключения.

Сегментирование

Azure Cosmos DB поддерживает автоматическое сегментирование на стороне сервера. Он автоматически управляет созданием, размещением и балансировкой сегментов. Azure Cosmos DB не поддерживает выполняемые вручную команды сегментирования. Это означает, что вам не нужно вызывать такие команды, как addShard, balancerStart, moveChunk и т. д. Ключ сегмента необходимо указывать только при создании контейнеров или при запросе данных.

Сеансы

Azure Cosmos DB пока не поддерживает команды сеансов на стороне сервера.

Срок жизни (TTL)

Azure Cosmos DB поддерживает срок жизни (TTL), определяемый по метке времени для документа. Срок жизни можно включить для коллекций на портале Azure.

Управление пользователями и ролями

Azure Cosmos DB пока не поддерживает концепцию пользователей и ролей. Тем не менее эта служба поддерживает управление доступом на основе ролей Azure (Azure RBAC), а также ключи и пароли для чтения и записи или только для чтения, которые можно получить с помощью панели строки подключения на портале Azure.

Проблемы с записью

Некоторые приложения используют проблемы с записью, указывая на число ответов, требуемых во время выполнения операции записи. Учитывая то, как Azure Cosmos DB обрабатывает репликацию, при использовании строгой согласованности все операции записи автоматически происходят в режиме кворума большинства по умолчанию. Любые проблемы с записью, определенные в клиентском коде, игнорируются. Дополнительные сведения см. в статье Использование уровней согласованности для повышения уровня доступности и производительности.

Дальнейшие действия