MongoDB 聚合命令

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>
               }
             )

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程