Compartir a través de

MongoDB 查询语言 (MQL) 功能和兼容性

适用对象: MongoDB vCore

Azure Cosmos DB for MongoDB (vCore)将 MongoDB 的熟悉功能与 Azure Cosmos DB 的企业功能相结合。 本文概述了兼容性和功能支持,包括 MongoDB 线路协议和查询语言构造。

应用程序可以使用相同的客户端驱动程序、SDK 和工具在没有代码更改的情况下运行。 用户受益于 Azure 的可伸缩性、安全性和与其他 Azure 服务的集成。

网络协议支持

Azure Cosmos DB for MongoDB (vCore) 服务使用 MongoDB 线路协议,该协议提供与现有工具和驱动程序的无缝兼容性。 任何支持 MongoDB 线路协议的客户端驱动程序都可以连接到 Azure Cosmos DB for MongoDB (vCore),以便应用程序可以在不更改代码的情况下运行。

开发人员可以保留相同的客户端驱动程序、软件开发工具包(SDK)和工具。 作为用户,还可以获得 Azure 的可伸缩性、安全性和与 Azure 平台中的其他服务的深度集成。

查询语言支持

除了协议支持外,Azure Cosmos DB for MongoDB(vCore)还提供对 MongoDB 查询语言构造的全面支持。

兼容性理念

总体产品兼容性是通过评估服务支持的 MongoDB 运算符数(聚合阶段、聚合运算符、查询和投影运算符和更新运算符)来确定的。 MongoDB 命令和管理操作不包括在该计算中,因为 Azure Cosmos DB for MongoDB (vCore) 作为 PaaS 产品,在内部支持大多数这些命令,无需用户干预。 这些命令不会向用户公开;但是,根据使用模式和客户反馈,可以使用一部分常用命令来简化用户体验。

目前产品的整体兼容性为 99.02%。 下面的兼容性摘要表详细介绍了对每种运算符类型的支持:

Total Supported 百分比
聚合阶段 60 58 96.67%
聚合运算符 181 181 100%
查询和投影运算符 45 44 97.78%
更新运算符 22 22 100%

以下部分全面细分了受支持的数据库操作员、命令和更多功能,从而清楚地了解了产品在各种方案中的兼容性和功能。

Operators

下表列出了 Azure Cosmos DB for MongoDB(vCore)中当前支持的运算符:

类别 Operator 支持 (v5.0) 支持(v6.0) 支持 (v7.0) 支持 (v8.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 ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $sin ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $cos ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $tan ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $asin ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $acos ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $atan ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $atan2 ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $asinh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $acosh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $atanh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $sinh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $cosh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $tanh ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $degreesToRadians ✅ 是 ✅ 是 ✅ 是 ✅ 是
三角表达式运算符 $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 ❌ 否 ❌ 否 ❌ 否 ❌ 否

Note

AvgObjsizesize in collStats & dbStats 仅适用于大小小于 2 KB 的文档。

架构验证支持:insertupdatefindAndModify以及聚合过程中的$merge / $out阶段。 使用 bypassDocumentValidation 根据需要跳过验证。

本文仅列出支持的服务器端命令,不包括客户端包装器函数。 客户端包装函数(例如 deleteMany() ,以及 updateMany())在内部调用相应的服务器命令(delete()update())。 依赖于受支持的服务器命令的任何函数都与 Azure Cosmos DB for MongoDB(vCore)兼容。

数据库命令

Azure Cosmos DB for MongoDB (vCore) 支持以下数据库命令:

类别 Command 功能(v5.0) 功能(v6.0) 功能(v7.0) 功能(v8.0)
管理命令 cloneCollectionAsCapped ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 collMod ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 compact ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 convertToCapped ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 create ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 createIndexes ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 currentOp ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 drop ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 dropDatabase ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 dropIndexes ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 filemd5 ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 getDefaultRWConcern ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 getClusterParameter N/A¹ ❌ 否 ❌ 否 ❌ 否
管理命令 getParameter ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 killCursors ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 killOp ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 listCollections ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 listDatabases ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 listIndexes ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 reIndex ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 renameCollection ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 setIndexCommitQuorum ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 setParameter ✅ 是 ✅ 是 ✅ 是 ✅ 是
管理命令 setDefaultRWConcern ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 validateDBMetadata ❌ 否 ❌ 否 ❌ 否 ❌ 否
管理命令 dropConnections N/A² N/A² N/A² N/A²
管理命令 fsync N/A² N/A² N/A² N/A²
管理命令 fsyncUnlock N/A² N/A² N/A² N/A²
管理命令 logRotate N/A² N/A² N/A² N/A²
管理命令 rotateCertificates N/A² N/A² N/A² N/A²
管理命令 setFeatureCompatibilityVersion N/A² N/A² N/A² N/A²
管理命令 shutdown N/A² N/A² N/A² N/A²
管理命令 compactStructuredEncryptionData N/A² N/A² N/A² N/A²
管理命令 setUserWriteBlockMode N/A² N/A² N/A² N/A²
聚合命令 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² N/A² N/A² N/A²
诊断命令 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

Note

  1. getClusterParameter 不受 v5.0 支持。
  2. Azure 对用于 MongoDB 的 vCore Azure Cosmos DB 进行全程管理,这是一种 PaaS 服务,可用于执行dropConnectionsfsynclogRotate等命令。
  3. MongoDB 版本 5.0 中已弃用。
  4. MongoDB 版本 5.1 中已弃用。
  5. 作为 PaaS 服务,数据库引擎会为你管理查询计划缓存。
  6. Azure 管理复制,无需手动复制。
  7. 作为完全托管服务,此功能通过 Microsoft Entra ID 提供。
  8. 作为 PaaS 产品/服务,Azure 负责分片管理和重新均衡。 只需对您的数据集合进行分片。 Azure 负责其余部分。

索引类型及其属性

Azure Cosmos DB for MongoDB(vCore)支持各种索引类型和属性,以优化查询性能并提高数据管理灵活性。

Indexes

Azure Cosmos DB for MongoDB (vCore) 支持以下索引类型:

Index Description Supported
单字段索引 为单个字段编制索引,以便更快地查找。 ✅ 是
复合索引 为一个索引中的多个字段编制索引。 ✅ 是
多键索引 通过为每个元素编制索引来为数组字段编制索引。 ✅ 是
文本索引 支持对字符串字段进行文本搜索。 ✅ 是
通配符索引 动态为所有字段或所选字段编制索引。 ✅ 是
地理空间索引 支持对 GeoJSON 数据进行空间查询。 ✅ 是
哈希索引 索引哈希字段值,通常用于分片。 ✅ 是

Note

创建唯一索引可在整个生成过程中获取针对集合的排他锁。 这些索引会阻止对集合执行读取操作和写入操作,直到操作完成。

索引属性

Azure Cosmos DB for MongoDB (vCore) 支持以下索引属性:

Index 属性 Description Supported
生存时间 (TTL) 在指定的生存时间之后自动删除文档。 ✅ 是
Unique 确保索引字段中的所有值都是唯一的。 ✅ 是
Partial 仅对与指定筛选条件匹配的文档编制索引。 ✅ 是
不区分大小写 支持字符串字段不区分大小写的索引。 ✅ 是
Sparse 仅对包含索引字段的文档编制索引。 ✅ 是
Background 允许在后台创建索引,而无需阻止操作。 ✅ 是