SQL 到聚合的 Map 图

在本页面

aggregation pipeline允许 MongoDB 提供与 SQL 中许多常见数据聚合操作相对应的本机聚合功能。

下表概述了常见的 SQL 聚合术语,函数和概念以及相应的 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

有关所有聚合管道和表达式运算符的列表,请参见聚合管道快速参考

Examples

下表提供了 SQL 聚合语句和相应的 MongoDB 语句的快速参考。表格中的示例假定以下条件:

{
  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 Description
SELECT COUNT(*)个 AS 计数

FROM order
db.orders.aggregate([
39]) 计算orders中的所有记录
选择总和(价格),总计
FROM order
db.orders.aggregate([
41]) 求和orders 中的price字段
SELECT cust_id,
总和(价格)AS
FROM orders
GROUP BY cust_id
db.orders.aggregate([
44]) 对于每个唯一的cust_id,求和price字段。
SELECT cust_id,
总和(价格)AS
FROM orders
GROUP BY cust_id
ORDER BY total
db.orders.aggregate([
47]) 对于每个唯一的cust_id,对price字段求和,结果按和排序。
SELECT cust_id,
ord_date,
总和(价格)AS
FROM orders
GROUP BY cust_id,
ord_date
db.orders.aggregate( [
50]) 对于每个唯一的cust_idord_date分组,对price字段求和。不包括日期的时间部分。
SELECT cust_id,
count()
FROM orders
GROUP BY cust_id
正在计数(
)> 1
db.orders.aggregate([
54]) 对于具有多个记录的cust_id,返回cust_id和相应的记录计数。
SELECT cust_id,
ord_date,
总和(价格)AS
FROM orders
GROUP BY cust_id,
ord_date
总计> 250
db.orders.aggregate([
57]) 对于每个唯一的cust_idord_date分组,对price字段求和,并仅在总和大于 250 的情况下返回。不包括日期的时间部分。
SELECT cust_id,
总和(价格)
FROM orders
状态=“ A”
GROUP BY cust_id
db.orders.aggregate([
61]) 对于状态为A的每个唯一cust_id,求和price字段。
SELECT cust_id,
总和(价格)
FROM orders
状态=“ A”
GROUP BY cust_id
总计> 250
db.orders.aggregate([
65]) 对于每个具有状态A的唯一cust_id,对price字段求和,并仅在总和大于 250 的情况下返回。
SELECT cust_id,
SUM(li.qty)为数量
从订单 o,
order_lineitem li
在哪里 li.order_id = o.id
GROUP BY cust_id
db.orders.aggregate([
69]) 对于每个唯一的cust_id,求和与订单相关联的相应订单项qty字段。
SELECT COUNT(*)
从(选择 cust_id,
ord_date
FROM orders
GROUP BY cust_id,
ord_date)
如 DerivedTable
db.orders.aggregate([
72]) 计算不同的cust_idord_date分组的数量。不包括日期的时间部分。
首页