SQL to Aggregation Mapping ChartSQL到聚合映射图
On this page本页内容
The aggregation pipeline allows MongoDB to provide native aggregation capabilities that corresponds to many common data aggregation operations in SQL.聚合管道允许MongoDB提供与SQL中许多常见数据聚合操作相对应的本地聚合功能。
The following table provides an overview of common SQL aggregation terms, functions, and concepts and the corresponding MongoDB aggregation operators:下表概述了常见的SQL聚合术语、函数和概念以及相应的MongoDB聚合运算符:
WHERE | $match |
GROUP BY | $group |
HAVING | $match |
SELECT | $project |
ORDER BY | $sort |
LIMIT | $limit |
SUM() | $sum |
COUNT() | $sum $sortByCount |
join | $lookup |
SELECT INTO NEW_TABLE | $out |
MERGE INTO TABLE | $merge |
UNION ALL | $unionWith |
For a list of all aggregation pipeline and expression operators, see Aggregation Pipeline Quick Reference.有关所有聚合管道和表达式运算符的列表,请参阅聚合管道快速参考。
See also: 另请参阅:
Examples实例
The following table presents a quick reference of SQL aggregation statements and the corresponding MongoDB statements. 下表提供了SQL聚合语句和相应的MongoDB语句的快速参考。The examples in the table assume the following conditions:表中的示例假设了以下条件:
The SQL examples assume two tables,SQL示例假定了两个表orders
andorder_lineitem
that join by theorder_lineitem.order_id
and theorders.id
columns.orders
和order_lineitem
,它们通过order_lineitem.order_id
和orders.id
列连接。The MongoDB examples assume one collectionMongoDB示例假设一个集合orders
that contain documents of the following prototype:orders
包含以下原型的文档:{
cust_id: "abc123",
ord_date: ISODate("2012-11-02T17:04:11.102Z"),
status: 'A',
price: 50,
items: [ { sku: "xxx", qty: 25, price: 1 },
{ sku: "yyy", qty: 25, price: 1 } ]
}
SQL Example | MongoDB Example | |
---|---|---|
SELECT COUNT(*) AS count |
db.orders.aggregate( [ | orders orders 中的所有记录进行计数 |
SELECT SUM(price) AS total |
db.orders.aggregate( [ | price field from orders orders 中的price 字段进行累加求和 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id , sum the price field.cust_id ,对price 字段进行累加求和 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id , sum the price field, results sorted by sum.cust_id ,对price 字段累加求和,结果按总和排序。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id , ord_date grouping, sum the price field. Excludes the time portion of the date.cust_id 、ord_date 分组,对price 字段累加求和。排除日期的时间部分。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id with multiple records, return the cust_id and the corresponding record count.cust_id ,返回cust_id 和相应的记录计数。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id , ord_date grouping, sum the price field and return only where the sum is greater than 250. Excludes the time portion of the date.cust_id 、ord_date 分组,对price 字段累加求和,并仅在总和大于250 的情况下返回。撇除日期的时间部分。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id with status A , sum the price field.A 的唯一cust_id ,对price 字段累加求和。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id with status A , sum the price field and return only where the sum is greater than 250.A 的唯一cust_id ,对price 字段累加求和,并仅在总和大于250 时返回。 |
SELECT cust_id, |
db.orders.aggregate( [ | cust_id , sum the corresponding line item qty fields associated with the orders.cust_id 累加求和与订单相关联的对应的行项qty 字段, |
SELECT COUNT(*) |
db.orders.aggregate( [ | cust_id , ord_date groupings. cust_id 、ord_date 分组的数量。 |