如何使用Python和MongoDB实现分组聚合和数据汇总

2023-04-15 00:00:00 分组 汇总 如何使用

分组聚合和数据汇总是MongoDB的一个重要特性,可以通过MongoDB的聚合框架实现。Python可以使用pymongo模块来操作MongoDB数据库。

下面是一个使用Python和MongoDB实现分组聚合和数据汇总的步骤:

  1. 连接MongoDB数据库

使用pymongo模块连接MongoDB数据库,可以使用以下代码:

import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")

db = client["mydatabase"]
  1. 创建数据集合并插入数据

创建一个名为“customers”的集合,并插入一些数据记录,可以使用以下代码:

customers = db["customers"]

data = [
  { "name": "Peter", "address": "Main Street 123", "age": 25 },
  { "name": "Amy", "address": "Park Lane 38", "age": 23 },
  { "name": "Hannah", "address": "Mountain 21", "age": 31 },
  { "name": "Michael", "address": "Valley 345", "age": 42 },
  { "name": "Sandy", "address": "Ocean Blvd 2", "age": 22 },
  { "name": "Betty", "address": "Green Grass 1", "age": 32 },
  { "name": "Richard", "address": "Sky st 331", "age": 29 },
  { "name": "Susan", "address": "One way 98", "age": 19 },
  { "name": "Vicky", "address": "Yellow Garden 2", "age": 34 },
  { "name": "Ben", "address": "Park Lane 38", "age": 27 },
  { "name": "William", "address": "Central st 954", "age": 22 },
  { "name": "Chuck", "address": "Main Road 989", "age": 32 },
  { "name": "Viola", "address": "Sideway 1633", "age": 28 }
]

x = customers.insert_many(data)
  1. 对数据集合进行分组和聚合操作

使用聚合框架进行分组和聚合操作,可以使用以下代码:

# 对所有文档根据年龄字段进行分组,并计算每个年龄分组的文档个数
pipeline = [
  {"$group": {"_id": "$age", "count": {"$sum": 1}}}
]

result = customers.aggregate(pipeline)

for doc in result:
  print(doc)

输出结果为:

{'_id': 22, 'count': 2}
{'_id': 27, 'count': 1}
{'_id': 19, 'count': 1}
{'_id': 28, 'count': 1}
{'_id': 23, 'count': 1}
{'_id': 31, 'count': 1}
{'_id': 29, 'count': 1}
{'_id': 32, 'count': 2}
{'_id': 25, 'count': 1}
{'_id': 34, 'count': 1}
{'_id': 42, 'count': 1}
  1. 对数据集合进行数据汇总操作

通过查询和计数等操作对数据集合进行数据汇总,可以使用以下代码:

# 查找地址为“Park Lane 38”的文档个数,并返回结果
query = { "address": "Park Lane 38" }
count = customers.count_documents(query)

print(count)

输出结果为:

2

综上所述,使用Python和MongoDB实现分组聚合和数据汇总可以使用pymongo模块操作MongoDB数据库,并使用聚合框架和查询操作实现。

相关文章