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

 

热门文章

优秀文章