MongoDB 2.6 兼容性改变 -- db.collection.aggregate()改变

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

描述


db.collection.aggregate()方法在mongo shell中,默认返回结果集的游标。这个修改使得聚合管道返回任何大小的结果集,需要游标遍历来访问结果集。例如:

1
2
3
4
5
6
7
8
9
var myCursor = db.orders.aggregate( [
{
$ group : {
_id:  "$cust_id" ,
total: { $ sum "$price"  }
}
}
] );
myCursor.forEach(  function (x) { printjson (x); } );

 

之前的版本返回带有字段result的单一文档,它包含了结果集的一个数组,受限于BSON文档大小限制。在MongoDB之前的版本访问结果集需要访问result字段,并遍历数组。例如:

1
2
3
4
5
6
7
8
9
10
var returnedDoc = db.orders.aggregate( [
{
$ group : {
_id:  "$cust_id" ,
total: { $ sum "$price"  }
}
}
] );
var myArray = returnedDoc.result; // access the result field
myArray.forEach(  function (x) { printjson (x); } );

 

解决方案


修改脚本,当前期待db.collection.aggregate()返回一个文档带result数组字段,替换为处理游标。

 

可以参考


聚合增强

db.collection.aggregate()
















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1661394 ,如需转载请自行联系原作者


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
存储 SQL 关系型数据库
MySQL8.0新特性与旧特性移除总结
MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是对MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。
121 1
|
SQL 前端开发 关系型数据库
MySQL only_full_group_by 1055 报错的三种解决方案,临时关闭有影响吗?
当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 `ERROR 1055 only_full_group_by` 错误,这是 5.7 之后 `SQL_MODE` 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。
1065 0
|
SQL 存储 Oracle
MySQL: 与only_full_group_by模式不兼容的两个解决办法
MySQL: 与only_full_group_by模式不兼容的两个解决办法
550 0
MySQL: 与only_full_group_by模式不兼容的两个解决办法
|
SQL Oracle 算法
Oracle MySQL相关工具replace操作实现方式区别
本文列举MySQL、Oracle、常用数据导入工具碰到主键冲突、唯一约束、以及其他对重复数据、已有数据的处理区别,并介绍MySQL、Oracle replace相关语句实现区别。 由此可见在实际使用不同数据库过程中,还是有许多差别,需要大家细心留意。
733 0
|
SQL Oracle 关系型数据库
关于ORACLE通过file_id与block_id定位数据库对象遇到的问题的一点思考
在ORACLE中,我们可以通过file_id(file#)与block_id(block#)去定位一个数据库对象(object)。例如,我们在10046生成的trace文件中file#=4 block#=266 blocks=8,那么我可以通过下面两个SQL去定位对象   SQL 1:此SQL效率较差,执行时间较长。
1095 0
|
存储 Oracle 关系型数据库