MongoDB中的Group By

openkk 12年前
     <div id="news_body">     <p> 为了回应用户对简单数据访问的需求,MongoDB 推出了<a href="/misc/goto?guid=4958331758884462161">聚合框架</a>(Aggregation Framework)。该框架使用声明性管道符号来支持类似于 SQL Group By 操作的功能,而不再需要用户编写自定义的 JavaScript 例程。</p>     <p> 大部分管道操作会在“aggregate”子句后会跟上“$match”打头。它们用在一起,就类似于 SQL 的 from 和 where 子句,或是 MongoDB 的 find 函数。“$project”子句看起来也非常类似 SQL 或 MongoDB 中的某个概念(和 SQL 不同的是,它位于表达式尾端)。</p>     <p> 接下来介绍的操作在 MongoDB 聚合框架中是独一无二的。与大多数关系数据库不同,MongoDB 天生就可以在行/文档内存储数组。尽管该特性对于全有全无的数据访问十分便利,但是它对于需要组合投影、分组和过滤操作来编写报告的工作,却显得相当复杂。“$unwind”子句将数组分解为单个的元素,并与文档的其余部分一同返回。</p>     <p> “$group”操作与 SQL 的 Group By 子句用途相同,但是使用起来却更像是 LINQ 中的分组运算符。与取回一行平面数据不同,“$group”操作的结果集会呈现为一个持续的嵌套结构。正因如此,使用“$group”可以返回聚合信息,例如对于每个分组中的实际文档,计算文档整体或部分的数目和平均值。</p>     <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958331759750790503">http://www.infoq.com/news/2012/02/MongoDB-Aggregation</a></p>     <div id="come_from">      来自:      <a id="link_source2" href="/misc/goto?guid=4958331760550398671" target="_blank">InfoQ</a>     </div>    </div>