MongoDB 聚合命令
一、MongoDB 聚合命令
聚合命令使用聚合管道进行聚合操作。聚合管道允许用户使用基于阶段的应用程序序列从记录或其他源执行数据处理。
语法:
{
aggregate: "<collection>" || 1, pipeline: [ <stage>, <...>],
explain: <boolean>, allowDiskUse: <boolean>,
cursor: <doc>,
maxTimeMS: <int>,
bypassDocumentValidation: <boolean>,
readConcern: <doc>,
collation: <doc>,
hint: <string or doc>,
comment: <string>,
writeConcern: <doc>
}
命令字段:
字段名 | 类型 | 描述 |
---|---|---|
aggregate | string | 它包含聚合管道的名称 |
pipeline | array | 将文档列表转换为聚合管道的一部分的数组。 |
explain | boolean | 解释字段是可选的,用于返回有关管道处理的信息。 |
allowDiskUse | boolean | 它使命令能够写入临时文件。 |
cursor | document | 它处理包含用于创建游标对象的控制选项的文档。 |
maxTimeMS | non-negative integer | 它定义了对游标的处理操作的时间限制。 |
Bypass Document Validation |
boolean | 它仅适用于您指定 out 或 merge 聚合阶段的情况。 |
readConcern | document | 它指定了读取关注点。可能的读取关注级别是 - 本地、可用、多数和可线性化。 |
collation | document |
我们可以使用排序规则为字符串比较指定语言特定的规则。例如 :大小写和重音符号的规则。 排序规则: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean>} |
hint | string or document | 它通过索引名称或索引规范文档声明索引。 |
comment | string | 我们可以声明一个任意字符串来帮助通过数据库分析器、currentOp 和日志跟踪操作。 |
writeConcern | document | 它设置为使用 $out 或 $merge 管道阶段的默认写入关注点。 |
示例:
我们在文章中有以下文件:
{
_id: ObjectId("52769ea0f3dc6ead47c9a1b2"),
author: "Ankit",
title: "yiidian",
tags: [ "Java Tutorial", "DBMS Tutorial", "mongodb"]
}
现在,我们将对文章集合执行聚合操作,以计算出现在集合中的 tags 数组中每个不同元素的计数。
db.runCommand( { aggregate: "articles",
pipeline: [
{ $project: { tags: 1 } },
{ $unwind: "$tags" },
{ $group: { _id: "$tags", count: { $sum : 1 } } }
],
cursor: { }
} )
二、MongoDB 计数命令
MongoDB count 命令计算集合或视图中的文档数。它返回一个包含计数和命令状态的文档。
语法:
{
count: <collection or view>,
query: <document>,
limit: <integer>,
skip: <integer>,
hint: <hint>,
readConcern: <document>,
collation: <document>
}
命令字段:
字段名 | 类型 | 描述 |
---|---|---|
count | string | 它是要计数的集合或视图的名称。 |
query | document | 它是可选的,用于选择要在集合或视图中计数的文档。 |
limit | integer | 它是可选的,用于限制要返回的匹配文档的最大数量。 |
skip | integer | 它是可选的,用于匹配文档在返回结果之前跳过。 |
hint | string | 它用于将索引名称定义为字符串或索引规范文档。 |
readConcern document | 它指定了读取关注点。
readConcern: { level: <value> } |
|
collation | document | 它允许我们为字符串比较定义特定于语言的规则。 句法: 排序规则: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
示例:
要计算集合中所有文档的数量:
db.runCommand( { count: 'orders' } )
三、MongoDB 不同的命令
此命令在单个集合中查找给定字段的不同值。它返回一个包含不同值数组的文档。返回文档包含带有查询统计信息和查询计划的嵌入记录。
语法:
distinct: "<collection>",
key: "<field>",
query: <query>,
readConcern: <read concern document>,
collation: <collation document>
}
命令字段:
字段名 | 类型 | 描述 |
---|---|---|
distinct | string | 是要查询不同值的集合名称 |
key | string | 这是命令为其返回不同值的字段。 |
query | document | 它指定将从中检索不同值的文档。 |
readConcern document | 它指定了读取关注点。
readConcern: { level: <value> } |
|
collation | document | 它允许我们为字符串比较定义特定于语言的规则。 句法: collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
示例:
以下示例为图书馆集合中所有文档的外业书籍返回不同的值:
db.runCommand ( { distinct: "library", key: "books" } )
四、MongoDB MapReduce 命令
MapReduce 命令允许我们在集合上运行 map-reduce 聚合操作。
语法:
db.runCommand(
{
mapReduce: <collection>,
map: <function>,
reduce: <function>,
finalize: <function>,
out: <output>,
query: <document>,
sort: <document>,
limit: <number>,
scope: <document>,
jsMode: <boolean>,
verbose: <boolean>,
bypassDocumentValidation: <boolean>,
collation: <document>,
writeConcern: <document>
}
)
命令字段:
字段名 | 类型 | 描述 |
---|---|---|
MapReduce | collection | 它是我们要对其执行 map-reduce 操作的集合的名称。 |
map | function | 它是一个关联或映射键值对的 JavaScript 函数。 |
reduce | function | 它是一个 JavaScript 函数,可将与特定键关联的所有值简化为单个对象。 |
out | string | 它指定存储输出的位置。 |
query | document | 它指定选择标准来确定输入到Map功能的文档。 |
sort | document | 它对输入文档进行排序。 |
limit | number | 它指定输入到 map 函数的最大文档数。 |
finalize | function | 它遵循reduce方法来修改输出。 |
scope | document | 它是一个选项,并声明在Map上可访问的全局变量。 |
jsMode | boolean | jsMode 指定是否将中间数据转换为 BSON 格式。 |
verbose | boolean | 它指定是否在结果中包含时间信息。 |
bypass Document Validation |
boolean | 它使 map-reduce 在操作期间绕过文档验证。 |
collation | document | 它允许我们为字符串比较指定特定于语言的规则。
collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
writeConcern | document | 它是一个文档,表示输出到集合时要使用的写入关注点。 |
示例:
var mapFunction = function() { ... };
var reduceFunction = function(key, values) { ... };
db.runCommand(
{
mapReduce: <input-collection>,
map: mapFunction,
reduce: reduceFunction,
out: { merge: <output-collection> },
query: <query>
}
)
热门文章
优秀文章