@JunQiu
2018-09-18T11:23:47.000000Z
字数 2415
阅读 1543
summary_2018/07 other mongodb
### some Instructions// 查看image中一些以来的版本docker inspect <hash> //没有,可以到container中npm list查看
Ctrl + a // 跳到行首Ctrl + e // 跳到行尾Ctrl + d // 删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit;处理多行标准输入时也表示eof)Ctrl + u // 删除光标之前到行首的字符Ctrl + k // 删除光标之前到行尾的字符Ctrl + l // 清屏,相当于执行clear命令Ctrl + 方向 //缩放界面程序终端分屏:详见见tool_shell_iterm
# 聚合管道# 聚合管道的优化核心思想:让尽量少的数据到达后面的管道中1、Projection Optimization聚合管道可以确定它是否仅需要文档中的字段的子集来获得结果。如果是这样,管道将只使用那些必需的字段,减少通过管道的数据量。(减少字段)2、Pipeline Sequence Optimization// 尽早通过$match过滤掉不需要的文档,以减少处理的数据量,如:$sort+ $match// $skip+ $limit:可以先进行limit,再进行skip// $project+ $skip或$limit:先进行limit// $skip + $skip# 管道的限制1、结果大小限制aggregate命令可以返回游标或将结果存储在集合中。返回游标或将结果存储在集合中时,结果集中的每个文档都受限制,目前为16兆字节; 如果任何单个文档超出 限制,该命令将产生错误。该限制仅适用于返回文档; 在管道处理期间,文档可能超过此大小。在版本3.6中更改: MongoDB 3.6删除了aggregate 命令的选项,以将其结果作为单个文档返回。2、内存限制在2.6版中更改:管道阶段的RAM限制为100兆字节。如果某个阶段超出此限制,MongoDB将产生错误。要允许处理大型数据集,请使用该allowDiskUse选项启用聚合管道阶段以将数据写入临时文件。3.4中更改:The $graphLookup stage must stay within the 100 megabyte memory limit. If allowDiskUse: true is specified for the aggregate() operation, the $graphLookup stage ignores the option. If there are other stages in the aggregate() operation, allowDiskUse: true option is in effect for these other stages.(allowDiskUse: true会被忽略在 in $graphLookup(递归搜索) stage)# 聚合管道和分片:聚合管道支持在业务分片集合3.2更改:如果管道以分片$match键上的精确开头,则整个管道仅在匹配的分片上运行。以前,管道将被拆分,合并它的工作必须在主分片上完成。(暂时不过多了解。。。。。)

# map:映射并提交一个键值对# reduce:一个键的所有值合并到一个单独的数组中# Example集合:{"post_text": "tutorialspoint is an awesome website for tutorials","user_name": "mark","status":"active"}//mapreduce>db.posts.mapReduce(function() { emit(this.user_id,1); # 生成键值对},# values 数组形式 [1,2,3,4]# key:values {a:[1,2,3]}function(key, values) {return Array.sum(values)},{query:{status:"active"},out:"post_total"})结果:{"result" : "post_total","timeMillis" : 9,"counts" : {"input" : 4,"emit" : 4,"reduce" : 2,"output" : 2},"ok" : 1,}只有 4 个文档符合查询条件(status:"active"),于是 map 函数就生成了 4 个带有键值对的文档,而最终 reduce 函数将具有相同键值的映射文档变为了 2 个。//查看查询结果使用find():{ "_id" : "tom", "value" : 2 }{ "_id" : "mark", "value" : 2 }(暂时不过多了解。。。。。)

