mogdb groupby sql写法
时间: 2023-06-28 12:04:47 浏览: 60
MongoDB是一种文档数据库,不同于传统的关系型数据库,因此没有group by操作,但可以使用聚合管道(aggregation pipeline)来实现类似的功能。下面是一个MongoDB的聚合管道示例,可以实现类似于SQL中的group by操作:
假设我们有一个名为"orders"的集合,其文档结构如下:
```
{
"_id": ObjectId("5f6c6e2e5b06bbed6f176f02"),
"customer": "Alice",
"total": 50,
"items": [
{"name": "apple", "price": 10},
{"name": "banana", "price": 20},
{"name": "cherry", "price": 20}
]
},
{
"_id": ObjectId("5f6c6e2e5b06bbed6f176f03"),
"customer": "Bob",
"total": 30,
"items": [
{"name": "apple", "price": 10},
{"name": "banana", "price": 10},
{"name": "cherry", "price": 10}
]
},
{
"_id": ObjectId("5f6c6e2e5b06bbed6f176f04"),
"customer": "Alice",
"total": 20,
"items": [
{"name": "apple", "price": 5},
{"name": "banana", "price": 5},
{"name": "cherry", "price": 10}
]
}
```
我们想要按照"customer"字段进行分组,并且计算每个分组中的"total"字段的总和和平均值,可以使用以下聚合管道:
```
db.orders.aggregate([
{$group: {
_id: "$customer",
total: {$sum: "$total"},
average: {$avg: "$total"}
}}
])
```
运行以上聚合管道后,得到的结果如下:
```
{ "_id" : "Bob", "total" : 30, "average" : 30 }
{ "_id" : "Alice", "total" : 70, "average" : 35 }
```
其中,"_id"字段表示分组的键,"total"字段表示"total"字段的总和,"average"字段表示"total"字段的平均值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)