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 | explain字段是可选的,用于返回有关管道处理的信息 |
allowDiskUse | boolean | 它使该命令能够写入临时文件 |
cursor | document | 它处理包含用于创建游标对象的control选项的文档 |
maxTimeMS | non-negative integer | 它为游标上的处理操作定义了时间限制 |
Bypass Document Validation | boolean | 它仅适用于指定out或merge聚合阶段的情况 |
readConcern | document | 它指定了读关注点。可能的读取关注级别有:局部的、可用的、多数的和线性的 |
collation | document | 我们可以使用排序规则来指定特定于语言的字符串比较规则。 |
hint | string or document | 它通过索引名称或索引规范文档声明索引 |
comment | string | 我们可以声明一个任意字符串,通过数据库分析器、currentOp和日志来帮助跟踪操作 |
writeConcern | document | 它被设置为在$out 或$merge 管道阶段使用默认的写入关注点 |
示例:
我们在文章中有以下文件:
{
_id: ObjectId("52769ea0f3dc6ead47c9a1b2"),
author: "Ankit",
title: "JavaTpoint",
tags: [ "Java Tutorial", "DBMS Tutorial", "mongodb"]
}
现在,我们将在articles集合上执行聚合操作,以计算集合中出现的tags数组每个不同元素的计数。
db.runCommand( { aggregate: "articles",
pipeline: [
{ project: { tags: 1 } },
{unwind: "tags" },
{group: { _id: "tags", count: {sum : 1 } } }
],
cursor: { }
} )
MongoDB count命令
MongoDB count命令用于计算集合或视图中文档的数量。它返回一个包含计数和命令状态的文档。
语法:
{
count: <collection or view>,
query: <document>,
limit: <integer>,
skip: <integer>,
hint: <hint>,
readConcern: <document>,
collation: <document>
}
命令字段
字段 | 数据类型 | 描述 |
---|---|---|
count | string | 它是要计数的集合或视图的名称 |
limit | integer | 它是可选的,用于限制返回的匹配文档的最大数量 |
skip | integer | 它是可选的,用于在返回结果之前匹配要跳过的文档 |
hint | string | 它用于将索引名称定义为字符串或索引规范文档 |
readConcern document | It specifies the read concern.readConcern: { level: <value> } |
|
collation | document | 它允许我们定义特定于语言的字符串比较规则 |
示例:
计算集合中所有文档的数量:
db.runCommand( { count: 'orders' } )
MongoDB Distinct 命令
该命令在单个集合中查找给定字段的不同值。它返回一个包含不同值数组的文档。返回的文档包含一个嵌入记录,其中包含查询统计和查询计划。
语法:
distinct: "<collection>",
key: "<field>",
query: <query>,
readConcern: <read concern document>,
collation: <collation document>
}
命令字段
字段 | 数据类型 | 描述 |
---|---|---|
distinct | string | 它是要查询不同值的集合的名称 |
key | string | 这是命令返回不同值的字段 |
query | document | 它指定从哪些文档中检索不同的值 |
readConcern document | It specifies the read concern. readConcern: { level: <value> } |
它允许我们定义特定于语言的字符串比较规则 |
collation | document |
示例:
以下示例返回库集合中所有文档中字段“books”的不同值:
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 | 它允许我们指定特定于语言的字符串比较规则 |
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>
}
)