参考手册

最后更新:2026-10-09

参考手册

按字母序排列的 311 个 MongoDB 条目及其用法说明。

#
$eq$eq 是查询比较操作符,选择字段值等于指定值的文档。它是 MongoDB 最常用的精确匹配条件:`{ age: { $eq: 21 } }` 等价于 `{ age: 21 }`,...
$ne$ne 选择字段值不等于指定值的文档,是 $eq 的否定形式。`{ age: { $ne: 18 } }` 匹配 age 不是 18 的所有文档。注意:与 $eq 一样对类型敏感,...
$in$in 选择字段值等于指定数组中任意一个值的文档,是 $or 的便捷简写。`{ age: { $in: [18, 21, 30] } }` 匹配 age 为 18、21 或 30 ...
$set$set 是更新操作符,用于设置(或覆盖)文档中一个或多个字段的值。字段不存在时自动创建,可用点路径更新嵌套字段。它是 MongoDB 更新操作中最常用的操作符。`{ $set: ...
$inc$inc 按指定量增加(或减少)字段的数值。字段不存在时先初始化为增量值。`{ $inc: { views: 1 } }` 给 views 加 1;`{ $inc: { stock...
$gt$gt 是查询比较操作符,选择字段值严格大于指定值的文档。`{ age: { $gt: 21 } }` 匹配年龄大于 21 的用户,恰好 21 岁不匹配。常用于范围查询:价格下限、...
$gte$gte 选择字段值大于或等于指定值的文档。`{ age: { $gte: 21 } }` 匹配 21 岁及以上的用户。它是 $gt 的边界包含版本,常用于「至少」「不少于」语义:...
$lt$lt 选择字段值严格小于指定值的文档。`{ price: { $lt: 20 } }` 匹配价格低于 20 的商品。常用于价格上限、日期截止、分数上限等场景。与 $gt 组合表达...
$lte$lte 选择字段值小于或等于指定值的文档。`{ price: { $lte: 50 } }` 匹配价格不超过 50 的商品。表达「最多」「不超过」语义,与 $gte 组合成闭区间...
$nin$nin 选择字段值不等于给定数组中任何一个值的文档,是 $in 的否定形式。`{ age: { $nin: [18, 21] } }` 匹配年龄既不是 18 也不是 21 的用户...
$and$and 组合多个查询条件,所有条件都满足的文档才返回。`{ $and: [ { price: { $gt: 10 } }, { inStock: true } ] }`。同一查询...
$or$or 组合多个查询条件,满足任意一个即返回该文档。`{ $or: [ { price: { $lt: 5 } }, { sale: true } ] }`。MongoDB 会对 ...
$not$not 对操作符表达式取反,返回不满足内部条件的文档。`{ price: { $not: { $gt: 50 } } }` 匹配价格不大于 50 的文档。注意:$not 不能直接...
$nor$nor 组合多个条件,所有条件都不满足的文档才返回。`{ $nor: [ { price: 1.99 }, { sale: true } ] }` 匹配既不是 1.99 元、也不...
$exists$exists 按字段是否存在筛选文档。`{ $exists: true }` 匹配字段存在(值非 null)的文档;`{ $exists: false }` 匹配字段不存在的文档...
$type$type 按 BSON 类型匹配字段值。`{ age: { $type: 'int' } }` 匹配 age 为 32 位整数的文档。类型可用别名(string、object、a...
$regex$regex 用正则表达式匹配字符串字段。`{ name: { $regex: '^A' } }` 匹配以 A 开头的名字。默认大小写敏感,选项 i 忽略大小写、m 多行匹配、x ...
$jsonSchema$jsonSchema 用 JSON Schema 草案标准校验文档结构,可作为查询条件或集合校验器。`{ $jsonSchema: { required: ['name'], p...
$expr$expr 允许在查询条件中使用聚合表达式,比较同一文档内多个字段或调用聚合操作符。`{ $expr: { $gt: ['$price', '$cost'] } }` 查询售价高于...
$text$text 对已建文本索引的字段执行全文搜索。`{ $text: { $search: 'coffee shop' } }`。使用前必须创建 text 索引(db.collecti...
$where$where 用 JavaScript 表达式作为查询条件。`{ $where: 'this.credits == this.debits' }`。表达式在服务器端执行,速度慢、无...
$mod$mod 匹配字段值除以给定除数后余数等于指定值的文档。`{ qty: { $mod: [4, 0] } }` 匹配 qty 能被 4 整除的文档。常用于分桶、取整、周期性筛选(如...
$all$all 匹配数组字段包含给定数组中所有元素的文档。`{ tags: { $all: ['mongodb', 'database'] } }` 要求 tags 同时包含这两个值,顺...
$elemMatch$elemMatch 匹配数组中至少一个元素完整满足给定条件的文档。`{ scores: { $elemMatch: { $gt: 80, $lt: 90 } } }` 要求存在一...
$size$size 匹配数组字段长度恰好等于指定值的文档。`{ tags: { $size: 3 } }` 匹配恰好有 3 个标签的文档。查询中 $size 只支持精确等值,不能写 { $...
$geoWithin$geoWithin 查询地理位置落在指定几何形状内的文档。支持 $box(矩形)、$polygon(多边形)、$center(圆,平面距离)、$centerSphere(球面圆)...
$geoIntersects$geoIntersects 查询与指定 GeoJSON 几何形状相交的文档。`{ loc: { $geoIntersects: { $geometry: { type: 'Pol...
$near$near 按与指定点的距离从近到远返回地理位置文档,结果自动按距离升序。`{ loc: { $near: { $geometry: { type: 'Point', coordi...
$nearSphere$nearSphere 按球面距离(地球曲面上的大圆距离)从近到远返回地理位置文档。`{ loc: { $nearSphere: { $geometry: { type: 'Poi...
$bitsAllSet$bitsAllSet 匹配数值字段中给定位置的所有位都为 1 的文档。`{ flags: { $bitsAllSet: 5 } }`(5 的二进制为 101)匹配第 0 位和第 ...
$bitsAllClear$bitsAllClear 匹配数值字段中给定位置的所有位都为 0 的文档。`{ flags: { $bitsAllClear: 3 } }`(3 的二进制为 11)匹配第 0 位...
$bitsAnySet$bitsAnySet 匹配数值字段中给定位置至少有一位为 1 的文档。`{ flags: { $bitsAnySet: 12 } }`(12 的二进制为 1100)匹配第 2 位...
$bitsAnyClear$bitsAnyClear 匹配数值字段中给定位置至少有一位为 0 的文档。`{ flags: { $bitsAnyClear: 7 } }`(7 的二进制为 111)匹配第 0、...
$meta$meta 在投影中返回 $text 搜索的附加元数据,最常用的是文本相关度得分 textScore。`{ score: { $meta: 'textScore' } }`。必须与...
$slice$slice 在投影中返回数组字段的一部分元素,不修改原文档。`{ tags: { $slice: 2 } }` 返回前 2 个元素;`{ tags: { $slice: [1, ...
$natural$natural 按集合的物理存储顺序返回文档。`{ $natural: 1 }` 正序(近似插入顺序),`{ $natural: -1 }` 逆序。对固定大小集合(capped ...
$comment$comment 给查询附加说明文字,方便在 currentOp、慢查询日志和 profile 中定位查询来源。`{ $comment: 'checkout-cart-query'...
$currentDate$currentDate 将字段值设为当前时间,可存为日期(Date)或时间戳(Timestamp)。`{ $currentDate: { lastModified: true }...
$min$min 更新时只在给定值小于当前字段值时写入,否则保持不变。`{ $min: { lowPrice: 50 } }`。字段不存在时直接写入。适合记录最低价、历史最低分等「只降不升...
$max$max 更新时只在给定值大于当前字段值时写入,否则保持不变。`{ $max: { highScore: 980 } }`。字段不存在时直接写入。适合记录最高分、历史最高价等「只升...
$mul$mul 将字段值乘以指定倍数。`{ $mul: { price: 0.9 } }` 打九折;`{ $mul: { quantity: 2 } }` 翻倍。字段不存在时按「乘以 0...
$rename$rename 重命名字段。`{ $rename: { 'oldName': 'newName' } }`,支持点路径处理嵌套字段。若新字段名已存在,旧值会覆盖新字段;目标字段不存...
$setOnInsert$setOnInsert 只在 upsert 触发插入新文档时设置字段值;若匹配到已有文档,该操作符被忽略。`{ $setOnInsert: { createdAt: new Da...
$unset$unset 从文档中删除指定字段。`{ $unset: { age: '' } }`,值可为任意占位(通常写空字符串)。嵌套字段用点路径删除。字段不存在时静默忽略。注意:在数组元...
$addToSet$addToSet 向数组字段添加元素,仅当元素不存在时才添加,保证数组内无重复值。`{ $addToSet: { tags: 'mongodb' } }`。要一次添加多个元素需配...
$pop$pop 移除数组的第一个(-1)或最后一个(1)元素。`{ $pop: { queue: -1 } }` 移除队首;`{ $pop: { queue: 1 } }` 移除队尾。数...
$pull$pull 从数组中移除所有等于指定值或满足指定条件的元素。`{ $pull: { tags: 'spam' } }` 移除所有 spam;条件写法 `{ $pull: { sco...
$push$push 向数组末尾追加一个或多个元素。`{ $push: { items: 'pen' } }`;一次多个需配合 $each。可组合 $position(插入位置)、$slic...
$pullAll$pullAll 从数组中移除给定值列表中的所有匹配元素。`{ $pullAll: { tags: ['spam', 'ads'] } }`。与 $pull 的区别:$pullAl...
$bit$bit 对整数字段执行位运算:与(and)、或(or)、异或(xor)。`{ $bit: { flags: { and: 254 } } }` 清除最低位。原子执行。字段不存在时...
$position$position 指定 $push 插入元素的位置。`{ $push: { items: { $each: ['x'], $position: 0 } } }` 在数组开头插入。...
$[]$[] 位置操作符更新数组中所有元素。`{ $set: { 'grades.$[]': 90 } }` 把所有成绩改为 90。配合 arrayFilters 时更新满足条件的元素;...
$[]$[标识符] 位置操作符配合 arrayFilters 更新数组中满足条件的元素。`{ $set: { 'grades.$[elem]': 90 } }, { arrayFilte...
$each$each 为 $push 和 $addToSet 提供多个待添加元素。`{ $push: { tags: { $each: ['a', 'b', 'c'] } } }`。$add...
$slice$slice 作为更新修饰符,在 $push 后限制数组长度。`{ $push: { log: { $each: [msg], $slice: -10 } } }` 只保留最近 1...
$sort$sort 作为更新修饰符,在 $push 后对数组元素排序。`{ $push: { scores: { $each: [85], $sort: -1 } } }` 降序排列。可与...
$match$match 是聚合管道的第一个阶段,用查询条件过滤文档,只让匹配的文档进入后续阶段。它等价于普通 find() 的查询条件,但只能在聚合管道中使用。尽可能把 $match 放在管...
$group$group 按指定字段(_id)将文档分组,并对每组应用累加器表达式($sum/$avg/$max 等)计算聚合值。它是聚合管道中功能最强的阶段,等价于 SQL 的 GROUP ...
$lookup$lookup 在当前集合中执行与另一个集合的等值关联(left outer join),把匹配的文档作为数组附加到每条结果文档。它等价于 SQL 的 LEFT JOIN,让聚合管...
$sum$sum 是累加器,在 $group 中计算一组文档指定字段的总和(或计数)。传数字表达式则求和,传字面量 1 则计数。它也用于 $project 阶段对数组元素求和。作为聚合表达...
$project$project 是管道的投影阶段,从文档中选择或排除字段,或用表达式计算新字段输出,把每个文档映射为只包含指定字段的新文档。与 $addFields 不同,$project 默认...
$unwind$unwind 将文档中的数组字段拆开,为每个数组元素输出一条文档,其余字段原样复制。适合把数组拍平后再做分组、统计或关联。空数组、缺失字段或 null 字段默认被丢弃,可用 pr...
$sort$sort 按指定字段对管道中的文档排序:1 升序、-1 降序,支持多字段组合排序。排序通常放在管道靠后位置,因为中间阶段可能改变文档顺序;若想借助索引加速排序,应把 $match...
$limit$limit 截断管道,只保留当前顺序的前 N 条文档并丢弃其余,不改变文档内容。与 find() 的 limit 语义一致。配合 $sort 可实现 top-N 查询;把 $li...
$skip$skip 丢弃管道当前顺序的前 N 条文档,其余原样通过,常用于与 $limit 配合实现 offset 加分页。注意跳过文档并不免费:被跳过的文档仍会被读取和丢弃。数据量大时,...
$count$count 统计管道中当前剩余的文档数量,输出一条形如 { 字段: N } 的文档并继续传递。它是 $group 加 $sum: 1 的简写。放在 $match 之后即可统计过滤...
$addFields$addFields 给每个文档新增字段或覆盖已有字段,同时保留其他所有字段。它与 $project 的区别在于:$project 默认丢弃未列出的字段,$addFields 只增...
$set$set 是 $addFields 的别名:给每个文档新增或覆盖字段,保留其余所有字段。用于在管道中途补充计算字段、常量或表达式结果。自 MongoDB 3.4 引入后与 $add...
$replaceRoot$replaceRoot 用指定的内嵌文档替换整个文档,常用于把 detail 这类内嵌对象提升到顶层。替换后原文档的字段全部消失,只剩新根。若目标字段缺失或不是文档对象会报错;可...
$replaceWith$replaceWith 与 $replaceRoot 基本一致:用指定表达式的结果替换整个文档,但表达式结果为 null 或缺失时保留原文档而不是报错。适合能提级就提级、提不了就...
$sample$sample 从集合中随机抽取指定数量的文档,用于抽样分析、测试数据或随机推荐。它不一定全量扫描集合,随机性也不保证完全均匀,适合作为近似随机抽样。$sample 输出的文档顺序...
$documents$documents 直接返回给定的字面量文档数组,不访问任何集合,是管道的字面量输入。它必须作为管道第一个阶段使用,常用来构造测试数据或对常量数组做后续表达式运算。每条文档按原样...
$sortByCount$sortByCount 是 $group 加 $sort 的组合简写:按指定表达式的值分组,统计每组文档数,并按数量降序输出形如 { _id: 值, count: N } 的文档...
$unset$unset 从文档中移除指定字段,保留其余所有字段。它是 { $project: { 字段: 0 } } 的简写,可一次移除多个字段,支持点号路径移除内嵌子字段。适合清理敏感字段...
$bucket$bucket 按边界把文档分到多个桶,每个桶输出一条 { _id: 下边界, count: N } 文档,可用 output 定义桶内累加结果。边界由升序的 boundaries...
$bucketAuto$bucketAuto 自动把文档均分到指定数量的桶,尽量让每桶文档数接近,无需手动指定边界:只需给分组键和桶数,系统按数值分布计算边界。granularity 可让边界落在规范化...
$densify$densify 在字段值之间补充缺失的中间值,生成新的文档序列,常用于时间序列插值——按小时、天等步长把缺失的时间点补齐,数值字段同样支持。需要指定字段、范围 range(步长、...
$setWindowFields$setWindowFields 按分区对文档做窗口计算——排名、移动平均、累计和等,并把结果写回每条文档。需要指定输出字段、窗口操作符(如 $rank、$denseRank 或累...
$facet$facet 在单个阶段内并行执行多个子管道,每个子管道独立处理同一份输入文档,结果以字段形式合并输出:{ 子管道名: 结果数组 }。适合一次请求同时拿到汇总统计、明细列表、Top...
$geoNear$geoNear 按地理位置从近到远输出文档,必须作为管道第一个阶段,并要求集合上有地理空间索引。它支持 distanceField 输出计算距离、spherical 球形或平面计...
$graphLookup$graphLookup 在集合上做递归查找,模拟图遍历:从每条文档的 connectFromField 值出发,递归匹配 connectToField,直到 maxDepth 或...
$merge$merge 把管道结果写入目标集合(可跨库、跨集群),支持按匹配键更新已有文档或插入新文档,是 $out 的增强版。它必须是管道最后一个阶段。核心选项:into 目标、on 匹配...
$out$out 把管道结果写入指定集合,替换该集合原有全部内容,目标不存在则自动创建。它必须是管道最后一个阶段,且不能与 $merge 混用。写入过程持有集合级锁,全量替换成本较高,常用...
$unionWith$unionWith 把管道到当前阶段的累计结果与另一集合(或同一集合)的文档合并输出,可用子管道对目标集合预处理。默认不去重,输出是两个来源的并集。适合合并多集合数据、统一报表。...
$redact$redact 按文档每层级的权限元数据决定保留、排除还是继续深入,实现行级与字段级过滤。它与 $$KEEP、$$PRUNE、$$DESCEND 三个系统变量配合:$$DESCEN...
$collStats$collStats 输出集合的存储统计信息——文档数、数据大小、索引信息、存储引擎细节等,输出单条文档。可用于容量规划与集合增长监控。可通过 latencyStats、stora...
$indexStats$indexStats 输出集合中每个索引的使用统计:索引名、访问次数、未命中次数和最后使用时间,每条索引输出一条文档。用于排查未使用索引、评估索引命中率。统计在 mongod 实...
$avg$avg 是累加器,在 $group 中计算一组文档指定字段的平均值;也可在 $project 中计算数组元素的平均值。它忽略 null 和缺失字段,仅对数字求平均。常用于报表统计...
$max$max 是累加器,返回一组文档中指定字段的最大值,在 $group 中使用;也可在 $project 中返回数组元素的最大值。比较遵循 BSON 类型排序,数值与字符串等不同类型...
$min$min 是累加器,返回一组文档中指定字段的最小值,在 $group 中使用;也可在 $project 中返回数组元素的最小值。与 $max 对称,比较遵循 BSON 类型排序,忽...
$push$push 是累加器,在 $group 中把组内每个文档的指定表达式结果追加到一个数组中,顺序与文档进入 $group 的顺序一致(通常不保证稳定)。它能把分组明细收集到一条文档里...
$addToSet$addToSet 是累加器,在 $group 中把组内文档的表达式结果加入数组并自动去重,重复值只保留一个。与 $push 类似但保证元素唯一。适合收集分类标签、客户列表等需要去...
$first$first 是累加器,在 $group 中返回组内第一个文档的指定字段值。它依赖文档进入 $group 的顺序,通常先 $sort 再 $group 才有意义(MongoDB 5...
$last$last 是累加器,在 $group 中返回组内最后一个文档的指定字段值,与 $first 对称。同样依赖输入顺序,使用前应 $sort。典型场景:取每组最新记录。也可在 $se...
$stdDevPop$stdDevPop 是累加器,计算组内指定字段的总体标准差,分母为 N 而不是 N-1。适用于数据代表整个总体的场景,如全校成绩。忽略非数字值。与 $stdDevSamp 的区别...
$stdDevSamp$stdDevSamp 是累加器,计算组内指定字段的样本标准差,分母为 N-1。适用于数据是总体抽样的情况,也是最常见的统计场景。忽略非数字值。与 $stdDevPop 的分母不同...
$top$top 是累加器,按指定排序规则返回组内排在最前的文档(整条文档,而非单个字段),自 MongoDB 5.2 起可用。排序必须通过 $group 的 sortBy 指定。与 $f...
$topN$topN 是累加器,返回组内按指定排序规则排在最前的 N 个文档(或 N 个表达式值),自 MongoDB 5.2 起可用。排序由 $group 的 sortBy 指定,n 可以...
$bottom$bottom 是累加器,按指定排序规则返回组内排在最后的文档(整条文档),自 MongoDB 5.2 起可用,与 $top 对称。排序由 $group 的 sortBy 指定,不...
$bottomN$bottomN 是累加器,返回组内按排序规则排在最后的 N 个文档或值,自 MongoDB 5.2 起可用,与 $topN 对称。排序由 $group 的 sortBy 指定,n...
$count$count 是累加器,统计 $group 中组内文档的数量,输出数值,自 MongoDB 5.0 起可用。它是 { $sum: 1 } 的等价简写,语义更清晰。注意与管道阶段 $...
$firstN$firstN 是累加器,返回组内前 N 个文档的指定字段值数组(按输入顺序),自 MongoDB 5.2 起可用。与 $first 的关系类似 $topN 与 $top,但它依赖...
$lastN$lastN 是累加器,返回组内最后 N 个文档的指定字段值数组(按输入顺序),自 MongoDB 5.2 起可用,与 $firstN 对称。常用于取每组最近 N 条记录。依赖输入...
$maxN$maxN 是累加器,返回组内指定字段最大的 N 个值(去重后)的数组,自 MongoDB 5.2 起可用。它不需要排序规则,直接按值大小取最大 N 个,结果顺序不保证。用于每组 ...
$minN$minN 是累加器,返回组内指定字段最小的 N 个值(去重后)的数组,自 MongoDB 5.2 起可用,与 $maxN 对称。无需排序规则,按值大小取最小 N 个。用于每组最低...
$accumulator$accumulator 用自定义 JavaScript 函数定义累加器逻辑,支持 init、accumulate、merge、finalize 等回调,在 $group 中使用。...
$median$median 是累加器,返回组内指定数值字段的中位数,自 MongoDB 7.0 起可用。中位数是排序后位于中间位置的值,对异常值不敏感。method 参数可选 approxim...
$percentile$percentile 是累加器,返回组内指定字段在给定百分位(0 到 100)上的值,自 MongoDB 7.0 起可用。p 参数可传单个值或数组,返回对应的一个或多个分位值。m...
$concatArrays$concatArrays 把多个数组合并成一个数组,不去重,是数组操作表达式,常用于 $project 与 $addFields;从 MongoDB 8.1 起也可作为 $gro...
$setUnion$setUnion 返回两个或多个数组的并集,自动去重,元素顺序不保证,是集合表达式,常用于 $project 与 $addFields;从 MongoDB 8.1 起也可作为 $...
$concat$concat 将两个或多个字符串(或解析为字符串的表达式)拼接为一个字符串。它是聚合表达式中最常用的字符串操作符,常用于组合姓名、生成完整地址或构造输出标签。任一个参数为 nul...
$toUpper$toUpper 将字符串转为大写。它是聚合表达式中最简单直接的字符串转换操作符,常用于规范化比较或输出统一格式。注意它只处理字符串,其他类型会报错(可先 $toString 转换...
$dateToString$dateToString 按指定格式字符串将日期转换为字符串,是聚合管道格式化输出日期的最常用方式。格式串使用占位符(如 %Y 年、%m 月、%d 日、%H 时),与 strft...
$add$add在聚合表达式中做加法,可把多个数值相加得到总和,也可把毫秒数加到日期上得到新日期。它常用于$project、$addFields、$set等阶段计算合计,例如计算含税总价。...
$subtract$subtract在聚合表达式中做减法,与$add相对。它接受两个参数:数值减数值得到差,日期减日期得到毫秒差,日期减毫秒数得到更早的新日期。常用于$project或$set阶段计...
$multiply$multiply在聚合表达式中对多个数值求乘积,参数以数组传入,至少两个。常用于$project、$addFields、$set阶段,例如单价乘以数量得到小计、汇率换算等场景。任...
$divide$divide在聚合表达式中做除法,接受两个参数:被除数与除数。常用于计算单价、人均、百分比等场景,例如用$divide把两个$sum的结果相除得到占比。注意除数为0时不会报错,而...
$mod$mod在聚合表达式中求余数,接受两个参数:被除数与除数,返回整除后的余数。常用于分页、周期判断、奇偶判定等场景,例如用订单号对2取模判断奇偶,或用时间戳取模做数据分片。注意除数为...
$abs$abs返回数值的绝对值,接受单个数值表达式。常用于计算距离、偏差、误差等场景,例如求实际值与目标值的差距,或计算地理位置偏移。参数为null或缺失时返回null;正无穷返回正无穷...
$ceil$ceil返回大于或等于指定数值的最小整数,即向上取整。常用于分页计算、库存与容量估算等需要向上取整的场景,例如7.5件货必须备8件。参数为null或缺失时返回null;整数输入原...
$floor$floor返回小于或等于指定数值的最大整数,即向下取整。常用于金额向下舍、统计下限、分桶等场景,例如按10分位向下取整做价格分桶。参数为null或缺失时返回null;整数输入原样...
$ln$ln返回数值的自然对数(以e为底)。常用于增长率计算、数据平滑、对数坐标转换等场景,例如把价格取自然对数后再做回归分析。参数为null或缺失时返回null;输入需为正数,0或负数...
$log$log返回指定底数的对数,接受两个参数:数值与底数。与$ln、$log10、$log2不同,$log的底数由第二个参数指定,例如$log: [8, 2]得到3。常用于自定义底数的...
$log10$log10返回数值以10为底的对数,即常用对数。常用于数量级判断、分贝计算、数据压缩等场景,例如把访问量取常用对数后看数量级。参数为null或缺失时返回null;输入必须大于0,...
$log2$log2返回数值以2为底的对数,常用于二分查找深度、二叉树高度、位宽计算等计算机场景,例如判断一个数需要多少二进制位。参数为null或缺失时返回null;输入必须大于0,0或负数...
$pow$pow计算数值的幂,接受两个参数:底数与指数,即底数的指数次方。常用于面积体积计算、复利、缩放等场景,例如半径平方求圆面积、10的n次方做数值缩放。指数为0时结果为1;0的0次方...
$sqrt$sqrt返回数值的平方根,接受单个数值表达式。常用于几何计算、标准差相关运算、归一化等场景,例如求欧氏距离时先求平方和再开方。参数为null或缺失时返回null;负数输入返回nu...
$exp$exp返回e的指定次方,即指数函数e的x次方,e约等于2.71828。常用于连续复利、指数平滑、自然对数还原等场景。参数为null或缺失时返回null;$exp与$ln互为逆运算...
$round$round对数值四舍五入,可指定保留小数位,接受两个参数:数值与可选的位置参数。位置为0或不传时取整,正数表示保留小数位,负数表示取整到十位、百位。常用于金额、评分等需要规范显示...
$trunc$trunc截断数值的小数部分,向零的方向取整,可指定保留位数。接受两个参数:数值与可选的位置参数,位置规则与$round相同。常用于金额舍去零头、分页、展示前处理等场景。与$ro...
$sign$sign返回数值的符号:正数返回1,负数返回-1,0返回0。常用于分类统计、涨跌方向判断、数据分桶等场景,例如把价格变动映射为上涨、下跌、持平三态。参数为null或缺失时返回nu...
$sin$sin返回弧度的正弦值,接受单个数值表达式,输入以弧度为单位。常用于周期信号处理、坐标变换、三角函数计算等场景,例如把角度换算成弧度后求正弦。参数为null或缺失时返回null;...
$cos$cos返回弧度的余弦值,接受单个数值表达式,输入以弧度为单位。常用于向量投影、波形分析、旋转计算等场景。参数为null或缺失时返回null;输入为NaN返回NaN,为±Infin...
$tan$tan返回弧度的正切值,接受单个数值表达式,输入以弧度为单位。常用于坡度计算、斜率换算、角度测量等场景。参数为null或缺失时返回null;输入为NaN返回NaN,为±Infin...
$asin$asin返回数值的反正弦,结果是弧度,输入必须在-1到1之间。常用于由正弦值反推角度、坐标转换等场景。参数为null或缺失时返回null;输入超出[-1, 1]范围会报错,因为实...
$acos$acos返回数值的反余弦,结果是弧度,输入必须在-1到1之间。常用于由余弦值反推角度、向量夹角计算等场景,例如计算两条向量的夹角。参数为null或缺失时返回null;输入超出[-...
$atan$atan返回数值的反正切,结果是弧度,输入可以是任意实数。常用于斜率换算角度、坐标方向计算等场景,例如由斜率求坡度角,或由高程差与水平距离计算倾斜角。参数为null或缺失时返回n...
$atan2$atan2根据纵坐标y与横坐标x返回方位角(弧度),参数顺序为[y, x],能正确处理四个象限,是平面坐标转极坐标的关键操作。常用于方向计算、导航、图形旋转等场景,例如由坐标差计...
$degreesToRadians$degreesToRadians把角度转换为弧度,乘以π/180。三角函数$sin、$cos、$tan都以弧度为输入,所以先做角度换算可以避免手工乘π出错。常用于地理坐标、三角计...
$radiansToDegrees$radiansToDegrees把弧度转换为角度,乘以180/π。反三角函数$asin、$acos、$atan、$atan2的结果都是弧度,用本操作符转成角度更符合业务习惯。常用...
$bitAnd$bitAnd对整数做按位与运算,接受一个整数数组(或单个数),MongoDB 6.3起可用。常用于权限位判断、标志位过滤、子网掩码计算等场景,例如判断一个权限整数是否包含某个位。...
$bitOr$bitOr对整数做按位或运算,接受一个整数数组(或单个数),MongoDB 6.3起可用。常用于位标志组合、权限合并等场景,例如把多个权限位合并成一个整数。任一参数为null或缺...
$bitXor$bitXor对整数做按位异或运算,接受一个整数数组(或单个数),MongoDB 6.3起可用。异或的规则是相同为0、不同为1,常用于数据校验、位翻转、加密混淆等场景,例如用密钥对...
$bitNot$bitNot对整数做按位取反(补码运算),是位运算中唯一只接受一个操作数的操作符,MongoDB 6.3起可用。结果等于-x-1,例如5取反得-6。常用于生成互补掩码、位运算中的...
$dateAdd$dateAdd 在指定日期上增加一定数量的时间单位,返回新的日期,是聚合管道中计算相对日期(如到期日、续费日、截止时间)的首选操作符。unit 支持 year、month、wee...
$dateSubtract$dateSubtract 从指定日期减去一定数量的时间单位,返回新日期,是 $dateAdd 的镜像操作。常用于计算会员过期日、优惠券有效期起点或数据保留期限。unit 支持 y...
$dateFromParts$dateFromParts 用年、月、日、时、分、秒、毫秒等数值部件构造一个日期,是 $dateToParts 的逆操作。它有两种模式:按日历字段(year、month、day ...
$dateToParts$dateToParts 把一个日期拆成年、月、日、时、分、秒、毫秒等字段的文档,是 $dateFromParts 的逆操作。设 iso8601 为 true 时,改用 isoWe...
$dateDiff$dateDiff 计算两个日期在指定单位下的差值,返回整数,是计算年龄、订阅时长、订单停留时间等场景的常用操作符。unit 支持 year、month、week、day、hour...
$dateTrunc$dateTrunc 将日期截断到指定时间单位的起点,返回截断后的新日期,适合按小时、天、月等粒度对齐时间戳做分组统计。unit 支持 year、quarter、month、wee...
$dateFromString$dateFromString 按指定格式把字符串解析为日期,是 $dateToString 的逆操作,常用于把导入数据或前端传来的日期字符串转为 BSON Date。format...
$dayOfMonth$dayOfMonth 返回日期中的「日」(1 到 31),是聚合管道中按天维度统计的常用表达式。它既可接受单个日期表达式,也可用对象形式显式传 timezone。常用于按日分组订...
$dayOfWeek$dayOfWeek 返回日期是星期几,以整数表示:1 为周日、7 为周六,与 JavaScript 的 Date.getDay() 一致。它常用于按星期分组统计流量或排班。注意它...
$dayOfYear$dayOfYear 返回日期是一年中的第几天(1 到 366),常用于年度进度统计、季节性分析或计算剩余天数。返回值从 1 开始,平年最大 365、闰年最大 366。它按 UTC...
$isoDayOfWeek$isoDayOfWeek 按 ISO 8601 标准返回星期编号:1 为周一、7 为周日,与 $dayOfWeek(周日为 1)语义不同。它适合与 $isoWeek、$isoWe...
$isoWeek$isoWeek 按 ISO 8601 标准返回日期所在周是全年第几周(1 到 53)。ISO 周从周一开始,第一个包含周四的周为第 1 周,与美式规则的 $week(周日开始、可...
$isoWeekYear$isoWeekYear 返回日期所在 ISO 周对应的年份,与 $isoWeek 配套使用。由于 ISO 周可能跨年(如 12 月 31 日可能属于下一年的第 1 周),周所属年...
$millisecond$millisecond 返回日期中的毫秒部分(0 到 999),是细粒度时间提取表达式。单独使用场景较少,多用于精确排序、去重或还原毫秒级时间戳。返回整数,不补零。timezon...
$minute$minute 返回日期中的分钟部分(0 到 59),常用于按分钟粒度统计流量、监控指标或构造时间窗口标签。返回整数,不补零。timezone 会改变分钟归属:时区偏移带分钟的地区...
$month$month 返回日期中的月份(1 到 12),是按月统计报表最常用的表达式之一。常配合 $year 一起作为 $group 的分组键,生成「年-月」维度。返回整数,不补零,需要两...
$second$second 返回日期中的秒部分(0 到 59),常用于构造秒级时间标签或校验时间戳。返回整数,不补零,需要两位字符串时用 $dateToString 的 %S。它与 $minu...
$week$week 按美国惯例返回日期所在周是全年第几周(0 到 53):每周从周日开始,第 1 周从当年第一个周日算起,之前的日期属于第 0 周。它与 ISO 标准的 $isoWeek ...
$year$year 返回日期中的完整年份(如 2026),是最基础的日期提取表达式。常与 $month、$week 等组合成多级分组键,或用于按年归档、同比分析。返回整数。注意它与 $is...
$hour$hour 返回日期中的小时部分(0 到 23),常用于按小时分析流量、监控告警窗口或生成小时维度报表。返回整数,采用 24 小时制。timezone 对小时的影响最大:UTC 时...
$split$split 按分隔符把字符串拆成子字符串数组,是处理逗号分隔值、标签列表、路径等文本的常用操作符。分隔符必须是非空字符串;若分隔符为空字符串,则按单个字符(码点)拆分。它常与 $...
$strcasecmp$strcasecmp 对两个字符串做不区分大小写的比较,返回 -1、0 或 1,用于排序、分组或条件判断。它只处理字符串,其他类型会报错。注意它比较的是码点顺序而非自然语言排序规...
$substr$substr 从字符串指定位置提取指定长度的子串。自 MongoDB 3.4 起,$substr 是 $substrCP 的别名,按 Unicode 码点(可理解为字符)计算位置...
$substrBytes$substrBytes 按 UTF-8 字节位置提取子串,位置和长度都以字节为单位。它适合处理纯 ASCII 文本(字节数等于字符数)或需要精确控制存储大小时使用。注意对中文等多...
$substrCP$substrCP 按 Unicode 码点(可理解为字符)提取子串,位置和长度都以码点为单位。它对中文、日文、emoji 等多字节字符完全安全,是提取用户可见文本的推荐操作符。与...
$regexFind$regexFind 在字符串中执行 Perl 兼容正则搜索,返回第一个匹配的结果文档(含 match、idx、captures 字段),无匹配时返回 null。regex 直接写...
$regexFindAll$regexFindAll 在字符串中执行正则搜索并返回所有匹配的数组,每个元素含 match、idx、captures 字段,无匹配时返回空数组。它适合批量提取邮箱、链接、数字等...
$regexMatch$regexMatch 判断字符串是否匹配正则,返回布尔值 true 或 false,是最轻量的正则表达式操作符,适合做条件过滤、数据清洗校验。它只做「是否匹配」判断,不返回匹配内...
$regexReplace$regexReplace 用正则匹配文本并替换为指定字符串,是聚合管道中的高级文本清洗工具。replacement 中可用 $1、$2 引用捕获组,实现抽取重组。options ...
$indexOfBytes$indexOfBytes 返回子串在字符串中首次出现的 UTF-8 字节位置,找不到返回 -1。可指定 start 和 end 限定搜索范围。字节位置与码点位置在多字节字符下不一...
$indexOfCP$indexOfCP 返回子串在字符串中首次出现的码点(字符)位置,找不到返回 -1。它以「字符」为单位,与人类阅读的位置一致,对中文、emoji 安全,是文本处理场景的首选。可传...
$trim$trim 去除字符串两端的空白字符(空格、制表符、换行等),也可用 chars 指定要去除的自定义字符集。它适合清洗用户输入、日志文本或 CSV 字段。不指定 chars 时只去...
$ltrim$ltrim 去除字符串左端(开头)的空白字符,或 chars 指定的字符集中的字符,是 $trim 的左侧版本。常用于清洗行首多余空格、缩进或前缀符号。chars 缺省为空白字符...
$rtrim$rtrim 去除字符串右端(结尾)的空白字符,或 chars 指定的字符集中的字符,是 $trim 的右侧版本。常用于清理文本行尾、去掉多余换行或结尾分隔符。chars 缺省为空...
$toLower$toLower 将字符串转为小写,是文本规范化的基础操作符。常用于统一存储格式、构造不区分大小写的查询键(配合索引)或清洗用户输入。只接受字符串,其他类型会报错,可先 $toSt...
$strLenBytes$strLenBytes 返回字符串的 UTF-8 字节长度,是估算存储空间、限制字段大小的常用操作符。对纯 ASCII 文本,字节数等于字符数;中文每字 3 字节、emoji 通...
$strLenCP$strLenCP 返回字符串的 Unicode 码点数量,即人类感知的「字符数」。它对中文、日文、emoji 都按 1 计数,适合做昵称长度限制、文本摘要等业务逻辑。与按字节计数...
$replaceOne$replaceOne 把字符串中第一次出现的子串替换为指定字符串,常用于修正拼写错误、替换前缀等。find 必须是非空字符串,否则报错;未找到 find 时返回原字符串不变。它是...
$replaceAll$replaceAll 把字符串中所有出现的子串都替换为指定字符串,适合批量清洗脏数据、统一分隔符等场景。find 必须非空,否则报错;未找到时返回原字符串。它是字面量替换,与 $...
$binarySize$binarySize 返回二进制数据(BinData)的字节大小;传入字符串时返回其 UTF-8 字节长度。它常用于监控附件大小、限制上传体积或做存储统计。非二进制非字符串的输入...
$arrayElemAt$arrayElemAt 按索引从数组中取出对应位置的元素,是聚合表达式里按位置访问数组的核心操作符。它常用于取出订单的第一个商品、取数组最后一个元素、或在 $project 中展...
$concatArrays$concatArrays 把两个或多个数组合并成一个新数组,常用于把多个标签列表、历史记录或分页数据拼在一起。所有参数都必须解析为数组,任一参数为 null 或缺失时整体返回 n...
$filter$filter 遍历数组,保留满足条件的元素并返回新数组,是聚合表达式里做数组过滤的首选操作符。典型场景包括筛选订单中已发货的商品、过滤掉无效标签、按评分阈值挑选评论。语法上需要提...
$indexOfArray$indexOfArray 在数组中查找指定值第一次出现的位置并返回索引,找不到时返回 -1。典型场景包括判断某标签是否存在、定位特定元素以便与 $arrayElemAt 组合取值...
$isArray$isArray 判断表达式结果是否为数组,返回布尔值。它常用于 $cond 中做类型分支:字段可能是标量也可能是数组时,先判断再决定处理路径;也能用来保护 $size/$map ...
$map$map 遍历数组,把每个元素交给 in 表达式处理并收集结果,返回与输入等长的新数组。它是聚合表达式里最常用的函数式操作符,典型场景包括给订单商品统一加税、把字符串数组转大写、从...
$size$size 返回数组的元素个数,结果是非负整数。它是最常用的数组元数据操作符,典型场景包括统计订单商品数量、判断数组是否为空、或在 $match 里过滤长度达到阈值的文档(配合 $...
$slice$slice 从数组中截取一部分元素,支持两种写法:两参数形式取前 n 个元素(n 为负则取最后 n 个),三参数形式先跳过若干元素再取指定数量。典型场景包括分页展示评论、取最近几...
$reduce$reduce 把数组归约为单个值,是聚合表达式里的折叠操作,等价于函数式编程的 reduce/fold。它需要 initialValue 初始值和 in 归约表达式,in 里 $...
$reverseArray$reverseArray 把数组元素顺序反转,返回新数组。典型场景包括把按时间升序的记录改成降序展示、把消息列表翻转为最新的在前。它只反转最外层数组,嵌套数组内部顺序不变。参数不...
$sortArray$sortArray 对数组内部元素排序,MongoDB 5.2 新增。标量数组直接指定 1(升序)或 -1(降序);对象数组用 { 字段: 1/-1 } 指定排序键,也可用 [ ...
$objectToArray$objectToArray 把文档对象转换成键值对数组,每个元素形如 { k: '字段名', v: '字段值' }。典型场景是字段名是动态的(如不同用户的评分维度)时,用 $ma...
$arrayToObject$arrayToObject 把键值对数组转换回文档对象,是 $objectToArray 的逆操作。输入支持两种格式:元素为 { k, v } 对象的数组,或元素为 [ '字段名...
$range$range 生成从起始值到结束值(不含结束值)的整数序列,可选步长参数。典型场景包括配合 $dateAdd 生成日期序列、为分页生成页码、在测试数据中批量造数。步长默认为 1,可...
$zip$zip 把多个数组按位置合并成一组组数组,每组包含各数组同一位置的元素,相当于把数组纵向对齐。默认按最短数组截断;设置 useLongestLength 为 true 时按最长数...
$allElementsTrue$allElementsTrue 判断数组的所有元素是否都为真值,返回布尔值。空数组返回 true(数学上的全称量化约定)。典型场景包括校验订单所有商品都有库存、检查用户是否勾选了...
$anyElementTrue$anyElementTrue 判断数组中是否至少有一个真值元素,返回布尔值。空数组返回 false。典型场景包括判断用户是否有任一收货地址、订单是否有任何优惠生效。它是 $all...
$setDifference$setDifference 返回第一个数组中存在但第二个数组中不存在的元素,结果自动去重。典型场景包括找出用户已购买但未收藏的商品、对比两个名单的差异。两个参数都必须是数组;nu...
$setEquals$setEquals 判断两个或多个数组作为集合是否相等,忽略顺序和重复。典型场景包括校验两组权限是否一致、对比配置和默认值是否相同。它支持多参数,所有数组的集合相等才返回 tru...
$setIntersection$setIntersection 返回同时出现在所有数组中的元素,结果自动去重。典型场景包括找出用户和好友共同的兴趣标签、计算多个筛选条件下的公共商品。支持两个及以上数组参数,nu...
$setIsSubset$setIsSubset 判断第一个数组的所有元素是否都出现在第二个数组中,即第一个集合是否为第二个的子集。典型场景包括检查用户权限是否覆盖某操作所需的全部权限、验证所选标签是否都...
$setUnion$setUnion 把所有数组的元素合并去重,返回并集。典型场景包括合并多个来源的标签、汇总不同渠道收集的线索 ID。支持两个及以上数组参数,null 元素会被忽略。结果不保证顺序...
$cond$cond 实现 if-then-else 三目逻辑,是聚合表达式里最基础的分支操作符。支持对象形式 { if, then, else } 和数组形式 [ 条件, 真值结果, 假值...
$ifNull$ifNull 在表达式结果为 null 或字段缺失时返回替换值,是处理空数据最常用的操作符。典型场景包括给缺失的简介提供默认文案、把 null 价格替换为 0 参与计算。Mong...
$switch$switch 按顺序求值多个 case 分支,返回第一个条件为真的 then 结果,类似编程语言的 switch-case。所有分支都不满足时返回 default;default...
$convert$convert 把值转换为指定 BSON 类型,是类型转换操作符的总入口。to 参数支持 double、string、objectId、bool、date、int、long、de...
$toBool$toBool 把值转换为布尔值。数字 0 转 false、非 0 数字转 true;字符串 'true'/'false' 可转换;日期转 true;null 返回 null。典型...
$toDate$toDate 把值转换为日期(BSON Date)。支持日期直接透传、数字时间戳(毫秒)、ISO 8601 格式字符串。典型场景包括把日志里的时间字符串转为日期以便按天分组、把前...
$toDecimal$toDecimal 把值转换为 Decimal128 高精度十进制数,用于金额等对精度敏感的计算,避免 double 的二进制浮点误差。支持数字、数字字符串和布尔值转换;null...
$toDouble$toDouble 把值转换为双精度浮点数(BSON double)。支持数字、数字字符串、布尔和日期转换;null 返回 null。典型场景包括把 CSV 导入的字符串数值转成数...
$toInt$toInt 把值转换为 32 位有符号整数(BSON int)。支持数字、数字字符串和布尔值转换;null 返回 null。典型场景包括把外部系统的整数字符串标准化、把浮点四舍五...
$toLong$toLong 把值转换为 64 位有符号整数(BSON long),范围远超 int,适合时间戳、ID 等大整数。支持数字、数字字符串和布尔值;null 返回 null。典型场景...
$toObjectId$toObjectId 把 24 位十六进制字符串转换为 ObjectId,是关联查询中最常用的类型转换。典型场景包括从 CSV 或 API 导入的字符串 ID 转成 Object...
$toString$toString 把值转换为字符串。数字、日期、布尔、ObjectId 等类型都可以转;null 返回 null。典型场景包括在 $concat 拼接前把数字转成字符串、把 Ob...
$cmp$cmp比较两个值,返回-1、0或1,分别表示小于、等于、大于。它是表达式版的比较操作符,常用于$sort字段的自定义排序、$cond中的大小判断等场景。比较遵循BSON类型顺序,...
$eq$eq是表达式版的相等比较,接受两个参数,返回布尔值。它用在$project、$match的$expr中等表达式上下文,与查询操作符的用法不同:查询里写{ field: { $eq...
$gt$gt是表达式版的大于比较,接受两个参数,前一个大于后一个时返回true。用于$project、$expr等表达式上下文,例如筛选价格大于成本的订单、判断数值是否超阈值。与查询操作...
$gte$gte是表达式版的大于等于比较,接受两个参数,第一个大于或等于第二个时返回true。常用于阈值判断、区间过滤等场景,例如筛选销量达到保底值的商品。表达式语法为{ $gte: [e...
$lt$lt是表达式版的小于比较,接受两个参数,第一个小于第二个时返回true。常用于数值、日期的大小判断,例如筛选库存低于警戒线的商品。表达式语法{ $lt: [expr1, expr...
$lte$lte是表达式版的小于等于比较,接受两个参数,第一个小于或等于第二个时返回true。常用于阈值上限判断、优惠资格校验等场景,例如判断金额是否在优惠限额内。表达式语法{ $lte:...
$ne$ne是表达式版的不相等比较,接受两个参数,两者不相等时返回true。常用于排除特定值、查找差异数据等场景,例如找出状态不是已关闭的订单。表达式语法{ $ne: [expr1, e...
$literal$literal返回一个不被解析为表达式的字面值,常用于需要把以$开头的字符串当普通文本、或保持数值类型不被转换的场景。例如{ $project: { prefix: { $lit...
$let$let在聚合表达式中定义局部变量并在in表达式中使用,避免重复计算复杂子表达式。语法是{ $let: { vars: { 变量名: 表达式 }, in: 表达式 } },变量以$...
$getField$getField按字面字段名从文档中取值,字段名即使以$开头或含特殊字符也不会被当作字段路径解析。语法为{ $getField: { field: 字段名, input: 文档 ...
$setField$setField在文档中新增或更新指定字段,返回新文档,不修改原文档。语法为{ $setField: { field: 字段名, input: 文档, value: 表达式 } ...
A
aggregate()aggregate()通过聚合管道对文档进行分组、计算、连接等多阶段处理,例如`db.users.aggregate([{ $group: { _id: '$city', tota...
allowDiskUse()allowDiskUse()允许游标在执行sort()等需要大量内存的阻塞型操作时使用磁盘,语法为`db.users.find().sort({ age: -1 }).allowD...
ArrayArray存储有序列表,元素可以是任意BSON类型(含嵌套数组与文档)。字段匹配是「包含任一元素」语义:`{ tags: 'mongodb' }`匹配tags中含该值的文档。`$e...
B
bulkWrite()bulkWrite()在一次调用中按顺序执行多条不同类型的写操作,支持insertOne、updateOne、updateMany、replaceOne、deleteOne、del...
batchSize()batchSize()设置游标每次向服务器批量拉取的文档数,语法为`db.users.find().batchSize(100)`。它影响网络往返次数与内存占用之间的平衡:批越大往...
BooleanBoolean表示真/假,只有true和false两个值,适合标志位与开关(如isActive、isDeleted)。查询直接匹配字段值即可;注意字段不存在与false是不同的状态...
BinaryBinary类型存储图片、文件、加密数据、UUID等非文本数据,比Base64字符串省空间且支持子类型(subtype:0通用、2旧格式、3 UUID、4 UUID新、7加密)。单...
C
countDocuments()countDocuments()统计集合中匹配过滤条件的文档数量,例如`db.users.countDocuments({ age: { $gte: 18 } })`。它在服务端执...
createIndex()createIndex()为集合创建单个索引以加速查询,例如`db.users.createIndex({ age: 1 }, { unique: true })`。值1表示升序、...
createIndexes()createIndexes()一次创建多个索引,例如`db.users.createIndexes([{ key: { age: 1 } }, { key: { email: 1 ...
count()count()统计当前游标会返回的文档数量,语法为`db.users.find({ age: { $gt: 20 } }).count()`。它作用于游标而非集合,因此会先应用fi...
collation()collation()为查询设置字符串比较规则,语法为`db.users.find({ name: 'alice' }).collation({ locale: 'zh', str...
close()close()提前关闭游标,释放服务器端资源,语法为`db.users.find().close()`。当游标尚未遍历完但不再需要时调用,可以停止服务端继续分批发送数据。它通常返回...
currentOpcurrentOp返回当前正在执行的数据库操作列表,用于诊断慢查询与定位长期运行的操作(如阻塞的写、未提交事务)。每个操作含opid、client、ns、secs_running、...
collModcollMod修改已有集合的配置:TTL索引的过期时间(expireAfterSeconds)、模式验证器(validator)、索引选项等。命令文档第一个字段是集合名。注意:co...
createIndexescreateIndexes为集合创建索引,支持单字段、复合、唯一、TTL、文本、地理空间等类型。mongosh中常用辅助方法db.collection.createIndex({ ...
createUsercreateUser创建数据库用户并分配角色,mongosh中用db.createUser({ user, pwd, roles })。角色可为内置角色(read、readWrit...
D
deleteOne()deleteOne()删除集合中第一条匹配过滤条件的文档,多条匹配时只删自然顺序的第一条。返回结果包含deletedCount,表示实际删除的文档数(0或1)。删除操作不可撤销,建...
deleteMany()deleteMany()删除集合中所有匹配过滤条件的文档,返回deletedCount表示实际删除数量。它是批量清理数据(如清理过期日志、下线用户数据)的主力方法。注意:传空条件{...
distinct()distinct()返回集合中指定字段的所有不重复值,例如`db.users.distinct('address.city')`。它只返回去重后的值数组,不返回完整文档。常用于枚举...
dropIndex()dropIndex()删除集合中的指定索引,参数为索引名或索引键,例如`db.users.dropIndex('age_1')`。删除索引会立即让依赖它的查询退化为全表扫描,生产环...
dropIndexes()dropIndexes()删除集合上的一个或多个索引,例如`db.users.dropIndexes()`删除全部非_id索引,也可传索引名数组只删指定索引。它会同时删除以指定名称...
drop()drop()删除整个集合及其所有文档、索引和元数据,例如`db.users.drop()`。与deleteMany()只删文档不同,drop()会一并移除索引和集合设置,之后需要重...
DateDate 是 MongoDB 的日期时间类型,内部以 64 位整数存储毫秒数(自 Unix epoch 起)。支持 ISO 日期字符串(new Date("2026-09-25")...
Decimal128Decimal128是MongoDB的高精度十进制类型,基于IEEE 754-2008十进制浮点标准,支持34位十进制有效数字。适合存储货币、利率等要求精确计算的数据,避免Doub...
DoubleDouble是MongoDB默认的数值类型,64位IEEE 754双精度浮点,范围约±1.8×10^308。mongosh中裸写的数字(如3.14)默认就是Double。适合科学计...
dropUserdropUser从数据库删除用户,删除后该用户立即无法认证,且不可恢复(需重新createUser)。mongosh中用db.dropUser('用户名')。删除前请确认用户不再使...
dbStatsdbStats返回当前数据库的统计信息:集合数、文档数、数据大小、索引大小、存储占用等,用于容量规划与监控。mongosh中用db.stats()或db.runCommand({ ...
E
estimatedDocumentCount()estimatedDocumentCount()基于集合元数据估算文档总数,例如`db.users.estimatedDocumentCount()`,不接受过滤条件。它不扫描实际...
explain()explain()返回查询的执行计划,语法为`db.users.find({ age: { $gt: 20 } }).explain('executionStats')`。结果包含...
F
find()find() 查询集合中匹配条件的文档,返回一个游标(Cursor)。它是最基础的读取方法:第一个参数是查询条件,第二个参数是投影(控制返回哪些字段)。游标默认惰性——真正数据在遍...
findOneAndUpdate()findOneAndUpdate()更新第一条匹配过滤条件的文档,并返回更新前(或更新后)的文档本身,例如`db.users.findOneAndUpdate({ name: 'A...
findOneAndDelete()findOneAndDelete()删除第一条匹配过滤条件的文档,并返回被删除的文档本身,例如`db.users.findOneAndDelete({ name: 'Cara' }...
findOneAndReplace()findOneAndReplace()用一份新文档整体替换第一条匹配过滤条件的文档,并返回替换前或替换后的文档,例如`db.users.findOneAndReplace({ na...
findOne()findOne()查询第一条匹配条件的文档并直接返回文档对象,而不是游标,例如`db.users.findOne({ name: 'Alice' })`。多条匹配时返回自然顺序的第...
forEach()forEach()对游标中的每条文档依次执行回调函数,例如`db.users.find().forEach(function(doc) { print(doc.name) })`。...
findfind是MongoDB的查询命令,mongosh中通常用db.collection.find(filter, projection)辅助方法调用,底层命令形式为db.runCom...
G
getIndexes()getIndexes()返回集合的全部索引列表,例如`db.users.getIndexes()`。结果数组包含每个索引的名称、键、是否唯一等信息,_id索引始终在第一项。它是排查...
grantRolesToUsergrantRolesToUser给已有用户追加角色,是在现有角色基础上增量添加,不清除旧角色(与updateUser的整体替换不同)。mongosh中用db.grantRolesT...
H
hasNext()hasNext()判断游标中是否还有下一条文档,语法为`while (db.users.find().hasNext()) { ... }`。它不会移动游标,只做检查,常与next...
hint()hint()强制查询使用指定的索引,语法为`db.users.find({ age: { $gt: 20 } }).hint({ age: 1 })`,参数可以是指定的索引键,也可...
I
insertOne()insertOne() 向集合插入一条文档。若文档未指定 _id,MongoDB 会自动生成一个 ObjectId 作为 _id。返回结果包含 insertedId 与 ackno...
insertMany()insertMany()用于一次向集合插入多条文档,例如`db.users.insertMany([{ name: 'A' }, { name: 'B' }])`。ordered为...
indexStats()indexStats()返回集合各索引的使用统计,例如`db.users.indexStats()`,包含每个索引被访问的次数、命中/未命中计数等信息。它可以帮你发现从未被使用的索...
Int32Int32是32位有符号整数,范围-2147483648到2147483647。注意:mongosh中裸写的数字(如42)默认是Double,要存整数必须显式构造`Int32(42...
insertinsert是底层插入命令,mongosh中通常用db.collection.insertOne()/insertMany()封装。命令形式为db.runCommand({ ins...
J
JavaScriptJavaScript类型用于在文档中存储JS代码,配合`$where`在服务端执行(逐文档运行)。`$where`无法利用索引且性能差,仅适合小集合或无法用查询操作符表达的复杂逻辑...
L
limit()limit()限制find()返回的文档数量,语法为`db.users.find({ age: { $gt: 20 } }).limit(5)`。它接在游标之后链式调用,是分页和取...
LongLong是64位有符号整数(BSON类型名int64),范围约±9.2×10^18,mongosh中用`Long(42)`或别名`NumberLong(42)`构造。适合时间戳毫秒...
logoutlogout结束当前连接的认证会话,使当前用户登出,mongosh中用db.logout()。通常用于脚本或共享连接切换身份;登出后该连接上再操作会报未认证错误,需重新认证。无参数...
listCollectionslistCollections返回数据库中的集合及选项(validator、collation、TTL等)。mongosh中用db.getCollectionNames()(仅名字...
M
map()map()对游标中的每条文档应用转换函数并返回结果数组,例如`db.users.find().map(function(u) { return u.name })`。它相当于for...
maxTimeMS()maxTimeMS()为游标操作设置最大执行时间(毫秒),语法为`db.users.find().maxTimeMS(5000)`。超过时限服务器会终止该操作并抛错,常用于防止慢查...
MinKeyMinKey是BSON特殊类型,比所有其他类型的值都小,与MaxKey相对。常用于分片键设计(如把特定数据强制排到第一个chunk)、排序哨兵、聚合占位等特殊场景。它是单例值,构造...
MaxKeyMaxKey是BSON特殊类型,比所有其他类型的值都大,与MinKey相对。常用于分片键设计(把数据排到最后一个chunk)、排序哨兵、聚合占位。它是单例值,构造用`MaxKey(...
N
next()next()返回游标中的下一条文档并把游标指针前移,语法为`db.users.find().next()`。游标耗尽后再调用会抛错,因此通常与hasNext()配合:`while ...
noCursorTimeout()noCursorTimeout()禁用游标的服务器端闲置超时,语法为`db.users.find().noCursorTimeout()`。默认游标闲置超过10分钟会被服务器清理,...
NullNull表示字段值为空,与字段不存在(missing)是两种不同状态。查询`{ field: null }`会同时匹配值为null和字段不存在的文档;要区分必须组合`$exists...
O
ObjectIdObjectId 是 MongoDB 默认的 _id 类型,一个 12 字节的唯一标识符:4 字节时间戳 + 5 字节随机值 + 3 字节自增计数器。它在插入文档未指定 _id 时...
Object (Document)Object指文档内的嵌套子文档,MongoDB支持任意层级嵌套,形成自描述数据模型。嵌套字段用点号路径访问,查询中需用引号包裹点号字段名,如`'profile.address.c...
P
pingping 命令检查 MongoDB 服务器是否可达且响应正常,返回 { ok: 1 } 表示连接成功。它是最简单的健康检查命令,常用于脚本启动时验证连接、或监控探活。等价于 mon...
profileprofile命令控制数据库分析器(Database Profiler):级别0关闭、1只记录慢操作(超过slowms)、2记录所有操作。开启后慢查询写入system.profil...
R
replaceOne()replaceOne()用一份全新的文档整体替换集合中第一条匹配过滤条件的文档。与updateOne()使用更新操作符不同,replaceOne()的第二个参数就是新文档本身——替...
renameCollection()renameCollection()将集合重命名为新名称,例如`db.users.renameCollection('members')`。重命名会保留集合的数据与索引,但目标名称...
Regular ExpressionRegular Expression是BSON中的正则类型,用于查询时的模式匹配,等价于查询条件`{ field: /pattern/ }`,支持PCRE语法与选项(i忽略大小写、...
runCommand()db.runCommand() 在 mongosh 中执行任意数据库命令,是访问那些没有专门辅助方法的底层命令(如 serverStatus、collStats、currentOp...
renameCollectionrenameCollection在数据库内或跨库重命名集合,必须在admin库执行(db.adminCommand)。重命名会移动集合及其索引、元数据,期间该集合写入短暂阻塞。dr...
revokeRolesFromUserrevokeRolesFromUser从用户移除指定角色,保留其他角色。撤销即时生效,用户立即失去对应权限;若所有角色被移除,用户只剩认证能力。mongosh中用db.revoke...
S
stats()stats()返回集合的统计信息,例如`db.users.stats()`,包含文档数、集合大小、存储大小、索引数量与索引大小、分片信息等。它是最常用的容量与健康度评估工具。返回的...
skip()skip()跳过游标中的前N条文档,语法为`db.users.find().sort({ age: 1 }).skip(10)`。它通常与limit()组合实现分页:skip()决...
sort()sort()按指定字段对游标结果排序,语法为`db.users.find().sort({ age: 1, name: -1 })`。值1表示升序、-1表示降序,多字段依次生效。排...
size()size()返回游标结果的数量,语法为`db.users.find().size()`,语义与count()基本一致,主要区别在于与limit()组合时size()会受limit影...
StringString是MongoDB最常用的字段类型,存储UTF-8编码文本。查询用`$eq`、`$regex`精确/模式匹配,全文搜索需先建text索引再用`$text`。注意:把数字、...
T
toArray()toArray()把find()等返回的游标全部取回并转换为JavaScript数组,语法为`db.users.find({ age: { $gt: 20 } }).toArray...
tailable()tailable()把游标标记为可追踪模式,例如`db.logs.find().tailable()`。可追踪游标不会在数据耗尽时自动关闭,而是持续等待新数据,常用于tail日志和...
tryNext()tryNext()尝试返回游标中的下一条文档,没有时返回null而不是抛错,语法为`const doc = db.users.find().tryNext()`。与next()在耗...
TimestampTimestamp是MongoDB内部类型,64位值由4字节Unix秒+4字节自增序号组成,主要用于复制集操作日志(oplog)与变更流等内部机制。业务存储时间点应用Date类型。...
U
updateOne()updateOne() 更新集合中**匹配条件的第一条**文档。若有多条匹配,只更新第一条(按自然顺序)。更新操作需用更新操作符($set/$inc/$push 等)指定修改。返回...
updateMany()updateMany()更新集合中所有匹配过滤条件的文档,例如`db.users.updateMany({ age: { $lt: 18 } }, { $set: { isTeen...
updateUserupdateUser修改已有用户:重置密码、更换角色、更新customData。只更新传入的字段,未传字段保持不变;注意roles是整体替换,传入新列表会覆盖旧角色。mongosh...
V
validate()validate()检查集合数据的结构完整性,例如`db.users.validate({ full: true })`。它扫描集合内部的BSON文档和索引,报告损坏或校验错误,常...
W
watch()watch()监听集合的变更并返回变更流(Change Stream),例如`db.users.watch([{ $match: { 'operationType': 'inser...
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏