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


Совместимость языка запросов MongoDB (MQL) в Azure DocumentDB

Azure DocumentDB обеспечивает полную совместимость языка запросов MongoDB (MQL), сочетая знакомые функции MongoDB с корпоративными возможностями Azure. В этой статье представлен обзор совместимости MQL и поддержки функций MQL в версиях 5.0-8.0, включая операторы, команды, индексы и протокол подключения MongoDB. Приложения могут выполняться без изменений кода, используя те же клиентские драйверы, пакеты SDK и средства. Пользователи получают преимущества масштабируемости, безопасности и интеграции Azure с другими службами Azure.

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

Служба Azure DocumentDB использует протокол подключения MongoDB, который обеспечивает простую совместимость с существующими инструментами и драйверами. Любой клиентский драйвер, поддерживающий протокол проводной передачи MongoDB, может подключаться к Azure DocumentDB, чтобы приложения могли работать без изменений кода.

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

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

Помимо поддержки протоколов, Azure DocumentDB также обеспечивает комплексную поддержку конструкций языка запросов MongoDB.

Философия совместимости

Общая совместимость продуктов определяется путем оценки количества операторов MongoDB (этапы агрегирования, операторы агрегирования, запросы и операторы проекции и операторы обновления), поддерживаемые службой. Команды MongoDB и операции администрирования исключены из этого вычисления, так как Azure DocumentDB в качестве предложения PaaS поддерживает большинство этих команд в собственной среде, устраняя необходимость вмешательства пользователя. Эти команды не предоставляются пользователям; Однако на основе шаблонов использования и отзывов клиентов доступно подмножество часто используемых команд для упрощения взаимодействия с пользователем.

Общая совместимость продуктов сегодня составляет 99.02%. Сводная таблица совместимости ниже содержит сведения о поддержке каждого типа оператора:

Total Поддерживается Процент
Этапы агрегирования 60 58 96.67%
Операторы агрегирования 181 181 100%
Операторы запросов и проекции 45 44 97.78%
Операторы обновления двадцать два двадцать два 100%

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

Операторы

В таблице перечислены операторы, которые в настоящее время поддерживаются в Azure DocumentDB:

Категория Operator Поддерживается (версия 5.0) Поддерживается (версия 6.0) Поддерживается (версия 7.0) Поддерживается (версия 8.0)
Операторы запросов сравнения $eq ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $gt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $gte ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $in ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $lt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $lte ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $ne ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов сравнения $nin ✅ Да ✅ Да ✅ Да ✅ Да
Операторы логических запросов $and ✅ Да ✅ Да ✅ Да ✅ Да
Операторы логических запросов $not ✅ Да ✅ Да ✅ Да ✅ Да
Операторы логических запросов $nor ✅ Да ✅ Да ✅ Да ✅ Да
Операторы логических запросов $or ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов элементов $exists ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов элементов $type ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $expr ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $jsonSchema* ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $mod ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $regex ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $text ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов оценки $where Не рекомендуется использовать в Mongo версии 8.0
Геопространственные операторы $geoIntersects ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $geoWithin ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $box ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $center ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $centerSphere ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $geometry ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $maxDistance ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $minDistance ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $polygon ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $near ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные операторы $nearSphere ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов массива $all ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов массива $elemMatch ✅ Да ✅ Да ✅ Да ✅ Да
Операторы запросов массива $size ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы запросов $bitsAllClear ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы запросов $bitsAllSet ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы запросов $bitsAnyClear ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы запросов $bitsAnySet ✅ Да ✅ Да ✅ Да ✅ Да
Операторы проекции $ ✅ Да ✅ Да ✅ Да ✅ Да
Операторы проекции $elemMatch ✅ Да ✅ Да ✅ Да ✅ Да
Операторы проекции $meta ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Операторы проекции $slice ✅ Да ✅ Да ✅ Да ✅ Да
Другие операторы запросов $comment ✅ Да ✅ Да ✅ Да ✅ Да
Другие операторы запросов $rand ✅ Да ✅ Да ✅ Да ✅ Да
Другие операторы запросов $natural ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $currentDate ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $inc ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $min ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $max ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $mul ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $rename ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $set ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $setOnInsert ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления полей $unset ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $ ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $[] ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $[identifier] ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $addToSet ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $pop ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $pull ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $push ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $pullAll ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $each ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $position ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $slice ✅ Да ✅ Да ✅ Да ✅ Да
Операторы обновления массива $sort ✅ Да ✅ Да ✅ Да ✅ Да
Операторы побитового обновления $bit ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $abs ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $add ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $ceil ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $divide ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $exp ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $floor ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $ln ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $log ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $log10 ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $mod ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $multiply ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $pow ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $round ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $sqrt ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $subtract ✅ Да ✅ Да ✅ Да ✅ Да
Арифметические операторы выражений $trunc ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $arrayElemAt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $arrayToObject ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $concatArrays ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $filter ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $firstN ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $in ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $indexOfArray ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $isArray ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $lastN ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $map ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $maxN ✅ Да ✅ Да ✅ Да
Операторы выражений массива $minN ✅ Да ✅ Да ✅ Да
Операторы выражений массива $objectToArray ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $range ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $reduce ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $reverseArray ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $size ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $slice ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений массива $sortArray ✅ Да ✅ Да ✅ Да
Операторы выражений массива $zip ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы $bitAnd ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы $bitNot ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы $bitOr ✅ Да ✅ Да ✅ Да ✅ Да
Побитовые операторы $bitXor ✅ Да ✅ Да ✅ Да ✅ Да
Логические операторы выражений $and ✅ Да ✅ Да ✅ Да ✅ Да
Логические операторы выражений $not ✅ Да ✅ Да ✅ Да ✅ Да
Логические операторы выражений $or ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $cmp ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $eq ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $gt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $gte ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $lt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $lte ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений сравнения $ne ✅ Да ✅ Да ✅ Да ✅ Да
Пользовательские операторы выражения агрегирования $accumulator Не рекомендуется использовать в Mongo версии 8.0
Пользовательские операторы выражения агрегирования $function Не рекомендуется использовать в Mongo версии 8.0
Операторы размера данных $bsonSize ✅ Да ✅ Да ✅ Да ✅ Да
Операторы размера данных $binarySize ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateAdd ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateDiff ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateFromParts ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateFromString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateSubtract ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateToParts ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateToString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dateTrunc ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dayOfMonth ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dayOfWeek ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $dayOfYear ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $hour ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $isoDayOfWeek ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $isoWeek ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $isoWeekYear ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $millisecond ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $minute ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $month ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $second ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $toDate ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $week ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражения даты $year ✅ Да ✅ Да ✅ Да ✅ Да
Оператор литерального выражения $literal ✅ Да ✅ Да ✅ Да ✅ Да
Прочие операторы $getField ✅ Да ✅ Да ✅ Да ✅ Да
Прочие операторы $rand ✅ Да ✅ Да ✅ Да ✅ Да
Прочие операторы $sampleRate ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений объектов $mergeObjects ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений объектов $objectToArray ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений объектов $setField ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $allElementsTrue ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $anyElementTrue ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $setDifference ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $setEquals ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $setIntersection ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $setIsSubset ✅ Да ✅ Да ✅ Да ✅ Да
Установка операторов выражений $setUnion ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $concat ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $dateFromString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $dateToString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $indexOfBytes ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $indexOfCP ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $ltrim ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $regexFind ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $regexFindAll ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $regexMatch ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $replaceOne ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $replaceAll ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $rtrim ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $split ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $strLenBytes ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $strLenCP ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $strcasecmp ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $substr ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $substrBytes ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $substrCP ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $toLower ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $toString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $trim ✅ Да ✅ Да ✅ Да ✅ Да
Операторы строковых выражений $toUpper ✅ Да ✅ Да ✅ Да ✅ Да
Оператор выражения текста $meta ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Операторы выражений метки времени $tsIncrement ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений метки времени $tsSecond ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $sin ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $cos ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $tan ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $asin ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $acos ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $atan ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $atan2 ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $asinh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $acosh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $atanh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $sinh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $cosh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $tanh ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $degreesToRadians ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений Trigonometry $radiansToDegrees ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $convert ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $isNumber ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toBool ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toDate ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toDecimal ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toDouble ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toInt ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toLong ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toObjectId ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $toString ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений типа $type ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $accumulator Не рекомендуется использовать в Mongo версии 8.0
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $addToSet ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $avg ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $bottom ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $bottomN ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $count ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $first ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $firstN ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $last ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $lastN ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $max ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $maxN ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $median ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $mergeObjects ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $min ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $percentile ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $push ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $stdDevPop ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $stdDevSamp ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $sum ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $top ✅ Да ✅ Да ✅ Да
Аккумуляторы ($group, $bucket, $bucketAuto) $setWindowFields $topN ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $avg ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $first ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $last ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $max ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $median ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $min ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $percentile ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $stdDevPop ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $stdDevSamp ✅ Да ✅ Да ✅ Да ✅ Да
Аккумуляторы (на других этапах) $sum ✅ Да ✅ Да ✅ Да ✅ Да
Операторы выражений переменной $let ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $sum ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $push ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $addToSet ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $count ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $max ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $min ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $avg ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $stdDevPop ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $bottom ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $bottomN ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $covariancePop ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $covarianceSamp ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $denseRank ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $derivative ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $documentNumber ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $expMovingAvg ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $first ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $integral ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $last ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $linearFill ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $locf ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $minN ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $rank ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $shift ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $stdDevSamp ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $top ✅ Да ✅ Да ✅ Да ✅ Да
Операторы окон $topN ✅ Да ✅ Да ✅ Да ✅ Да
Операторы условного выражения $cond ✅ Да ✅ Да ✅ Да ✅ Да
Операторы условного выражения $ifNull ✅ Да ✅ Да ✅ Да ✅ Да
Операторы условного выражения $switch ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $addFields ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $bucket ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $bucketAuto ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $changeStream ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $changeStreamSplitLargeEvent ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $collStats ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $count ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $densify ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $documents ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $facet ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $fill ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $geoNear ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $graphLookup ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $group ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $indexStats ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $limit ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $listSampledQueries ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $listSearchIndexes ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $listSessions ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $lookup ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $match ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $merge ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $out ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $planCacheStats ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $project ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $redact ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $replaceRoot ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $replaceWith ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $sample ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $search ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $searchMeta ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $set ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $setWindowFields ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $skip ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $sort ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $sortByCount ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $unionWith ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $unset ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $unwind ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $shardedDataDistribution ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Этапы конвейера агрегирования $currentOp ✅ Да ✅ Да ✅ Да ✅ Да
Этапы конвейера агрегирования $listLocalSessions ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Переменные в выражениях агрегирования NOW ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования ROOT ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования REMOVE ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования CURRENT ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования CLUSTER_TIME ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Переменные в выражениях агрегирования DESCEND ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования PRUNE ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования KEEP ✅ Да ✅ Да ✅ Да ✅ Да
Переменные в выражениях агрегирования SEARCH_META ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Переменные в выражениях агрегирования USER_ROLES ❌ Нет ❌ Нет ❌ Нет ❌ Нет

Замечание

AvgObjsize и в size и collStats, dbStats работает только с документами размером менее 2 килобайтов.

Проверка схемы поддерживает: insert, update, findAndModify, и $merge / $out этапы агрегирования. Используйте bypassDocumentValidation для пропуска проверки при необходимости.

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

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

Azure DocumentDB поддерживает следующие команды базы данных:

Категория Command Функция (версия 5.0) Функция (версия 6.0) Функция (версия 7.0) Функция (версия 8.0)
Административные команды cloneCollectionAsCapped ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды collMod ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды compact ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды convertToCapped ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды create ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды createIndexes ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды currentOp ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды drop ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды dropDatabase ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды dropIndexes ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды filemd5 ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды getDefaultRWConcern ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды getClusterParameter N/Ano ❌ Нет ❌ Нет ❌ Нет
Административные команды getParameter ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды killCursors ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды killOp ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды listCollections ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды listDatabases ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды listIndexes ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды reIndex ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды renameCollection ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды setIndexCommitQuorum ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды setParameter ✅ Да ✅ Да ✅ Да ✅ Да
Административные команды setDefaultRWConcern ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды validateDBMetadata ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Административные команды dropConnections N/A 2 N/A 2 N/A 2 N/A 2
Административные команды fsync N/A 2 N/A 2 N/A 2 N/A 2
Административные команды fsyncUnlock N/A 2 N/A 2 N/A 2 N/A 2
Административные команды logRotate N/A 2 N/A 2 N/A 2 N/A 2
Административные команды rotateCertificates N/A 2 N/A 2 N/A 2 N/A 2
Административные команды setFeatureCompatibilityVersion N/A 2 N/A 2 N/A 2 N/A 2
Административные команды shutdown N/A 2 N/A 2 N/A 2 N/A 2
Административные команды compactStructuredEncryptionData N/A 2 N/A 2 N/A 2 N/A 2
Административные команды setUserWriteBlockMode N/A 2 N/A 2 N/A 2 N/A 2
Команды агрегирования aggregate ✅ Да ✅ Да ✅ Да ✅ Да
Команды агрегирования count ✅ Да ✅ Да ✅ Да ✅ Да
Команды агрегирования distinct ✅ Да ✅ Да ✅ Да ✅ Да
Команды агрегирования mapReduce N/A N/A N/A N/A
Команды проверки подлинности authenticate ✅ Да ✅ Да ✅ Да ✅ Да
Команды проверки подлинности logout N/A N/A N/A N/A
Команды диагностики buildInfo ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики collStats ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики connPoolStats ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики connectionStatus ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики dataSize ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики dbHash ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики dbStats ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики explain ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики getCmdLineOpts ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики getLog ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики hello ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики hostInfo ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики listCommands ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики lockInfo ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики ping ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики profile N/A 2 N/A 2 N/A 2 N/A 2
Команды диагностики serverStatus ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики shardConnPoolStats N/A N/A N/A N/A
Команды диагностики top ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды диагностики validate ✅ Да ✅ Да ✅ Да ✅ Да
Команды диагностики whatsmyuri ✅ Да ✅ Да ✅ Да ✅ Да
Геопространственные команды geoSearch N/A N/A N/A N/A
Команды операций запроса и записи bulkWrite ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды операций запроса и записи delete ✅ Да ✅ Да ✅ Да ✅ Да
Команды операций запроса и записи find ✅ Да ✅ Да ✅ Да ✅ Да
Команды операций запроса и записи findAndModify ✅ Да ✅ Да ✅ Да ✅ Да
Команды операций запроса и записи getLastError N/A N/A N/A N/A
Команды операций запроса и записи getMore ✅ Да ✅ Да ✅ Да ✅ Да
Команды операций запроса и записи insert ✅ Да ✅ Да ✅ Да ✅ Да
Команды операций запроса и записи resetError N/A N/A N/A N/A
Команды операций запроса и записи update ✅ Да ✅ Да ✅ Да ✅ Да
Команды кэша плана запросов N/A
Команды репликации N/A
Команды управления ролями N/A
Команды сеанса abortTransaction ✅ Да ✅ Да ✅ Да ✅ Да
Команды сеанса commitTransaction ✅ Да ✅ Да ✅ Да ✅ Да
Команды сеанса endSessions ✅ Да ✅ Да ✅ Да ✅ Да
Команды сеанса killAllSessions ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды сеанса killAllSessionsByPattern ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды сеанса killSessions ✅ Да ✅ Да ✅ Да ✅ Да
Команды сеанса refreshSessions ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды сеанса startSession ✅ Да ✅ Да ✅ Да ✅ Да
Команды сегментирования enableSharding ✅ Да ✅ Да ✅ Да ✅ Да
Команды сегментирования isdbgrid ✅ Да ✅ Да ✅ Да ✅ Да
Команды сегментирования reshardCollection ✅ Да ✅ Да ✅ Да ✅ Да
Команды сегментирования shardCollection ✅ Да ✅ Да ✅ Да ✅ Да
Команды сегментирования unsetSharding N/A N/A N/A N/A
Команды сегментирования addShardToZone N/A N/A N/A N/A
Команды сегментирования clearJumboFlag N/A N/A N/A N/A
Команды сегментирования abortUnshardCollection N/A N/A N/A N/A
Команды сегментирования removeShard N/A N/A N/A N/A
Команды сегментирования removeShardFromZone N/A N/A N/A N/A
Команды сегментирования setShardVersion N/A N/A N/A N/A
Команды сегментирования mergeChunks N/A N/A N/A N/A
Команды сегментирования abortMoveCollection N/A N/A N/A N/A
Команды сегментирования getShardMap N/A N/A N/A N/A
Команды сегментирования analyzeShardKey N/A N/A N/A N/A
Команды сегментирования medianKey N/A N/A N/A N/A
Команды сегментирования checkMetadataConsistency N/A N/A N/A N/A
Команды сегментирования shardingState N/A N/A N/A N/A
Команды сегментирования cleanupReshardCollection N/A N/A N/A N/A
Команды сегментирования flushRouterConfig N/A N/A N/A N/A
Команды сегментирования balancerCollectionStatus N/A N/A N/A N/A
Команды сегментирования balancerStart N/A N/A N/A N/A
Команды сегментирования balancerStatus N/A N/A N/A N/A
Команды сегментирования balancerStop N/A N/A N/A N/A
Команды сегментирования configureCollectionBalancing N/A N/A N/A N/A
Команды сегментирования listShards N/A N/A N/A N/A
Команды сегментирования split N/A N/A N/A N/A
Команды сегментирования moveChunk N/A N/A N/A N/A
Команды сегментирования updateZoneKeyRange N/A N/A N/A N/A
Команды сегментирования movePrimary N/A N/A N/A N/A
Команды сегментирования moveRange N/A N/A N/A N/A
Команды сегментирования abortReshardCollection N/A N/A N/A N/A
Команды сегментирования commitReshardCollection N/A N/A N/A N/A
Команды сегментирования refineCollectionShardKey N/A N/A N/A N/A
Команды сегментирования configureQueryAnalyzer N/A N/A N/A N/A
Команды сегментирования transitionFromDedicatedConfigServer N/A N/A N/A N/A
Команды сегментирования transitionToDedicatedConfigServer N/A N/A N/A N/A
Команды сегментирования unshardCollection N/A N/A N/A N/A
Команды аудита системных событий logApplicationMessage ❌ Нет ❌ Нет ❌ Нет ❌ Нет
Команды управления пользователями createUser ✅ Да ✅ Да ✅ Да ✅ Да
Команды управления пользователями dropUser ✅ Да ✅ Да ✅ Да ✅ Да
Команды управления пользователями usersInfo ✅ Да ✅ Да ✅ Да ✅ Да
Команды управления пользователями dropAllUsersFromDatabase N/A N/A N/A N/A
Команды управления пользователями grantRolesToUser N/A N/A N/A N/A
Команды управления пользователями revokeRolesFromUser N/A N/A N/A N/A
Команды управления пользователями updateUser N/A N/A N/A N/A

Замечание

  1. getClusterParameter не поддерживается в версии 5.0.
  2. Azure полностью управляет Azure DocumentDB, службой PaaS для таких команд, как dropConnections, fsyncи logRotateт. д.
  3. Не рекомендуется использовать в MongoDB версии 5.0.
  4. Не рекомендуется использовать в MongoDB версии 5.1.
  5. Будучи службой PaaS, ядро СУБД управляет кэшированием плана запросов.
  6. Azure управляет репликацией, удаляя необходимость реплицировать вручную.
  7. В качестве полностью управляемой службы эта возможность предоставляется с помощью идентификатора Microsoft Entra.
  8. В предложении PaaS, Azure обрабатывает управление шардами и ребалансировку. Вам нужно только сегментировать коллекции. Azure заботится об остальных.

Типы индексов

Azure DocumentDB поддерживает следующие типы индексов:

Index Description Поддерживается
Индекс одного поля Индексирует одно поле для ускорения поиска. ✅ Да
Составной индекс Индексирует несколько полей в одном индексе. ✅ Да
Многоключевой индекс Индексирует поля массива путем индексирования каждого элемента. ✅ Да
Текстовый индекс Поддерживает поиск текста в строковых полях. ✅ Да
Индекс подстановочных знаков Динамически индексирует все или выбранные поля. ✅ Да
Геопространственный индекс Поддерживает пространственные запросы для данных GeoJSON. ✅ Да
Хэшированный индекс Индексы хэшированных значений полей часто используются для сегментирования. ✅ Да
Векторный индекс (только в DocumentDB) Включает поиск сходства по векторным данным. ✅ Да, с векторным поиском

Замечание

Создание уникального индекса получает монопольную блокировку коллекции на весь период процесса сборки. Эти индексы блокируют операции чтения и записи в коллекции до завершения операции.

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

Azure DocumentDB поддерживает следующие свойства индекса:

Свойство Index Description Поддерживается
время жизни (TTL) Автоматически удаляет документы после указанного срока времени жизни. ✅ Да
Уникальный Гарантирует, что все значения в индексированных полях уникальны. ✅ Да
Частично Индексирует только документы, соответствующие указанному условию фильтра. ✅ Да
Без учета регистра Поддерживает индексирование без учета регистра для строковых полей. ✅ Да
Разреженный Индексирует только документы, содержащие индексированные поля. ✅ Да
Предыстория Позволяет создавать индекс в фоновом режиме без блокировки операций. ✅ Да