You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MongoDB指定对象提取为Pandas DataFrame?

从MongoDB提取指定字段并转换为Pandas DataFrame

步骤1:优化MongoDB查询,过滤出仅含manuelActivityInfo的活动条目

原查询会返回包含符合条件活动的整个文档,但文档的activities数组里可能混有不带manuelActivityInfo的条目。用聚合管道可以直接在数据库层面过滤数组元素,减少后续数据处理量:

# 使用聚合管道过滤并提取目标数据
pipeline = [
    # 匹配存在manuelActivityInfo的文档
    {"$match": {"activities.manuelActivityInfo": {"$exists": True}}},
    # 过滤activities数组,仅保留带manuelActivityInfo的条目
    {"$project": {
        "filtered_activities": {
            "$filter": {
                "input": "$activities",
                "as": "activity",
                "cond": {"$exists": ["$$activity.manuelActivityInfo", True]}
            }
        },
        "_id": 0
    }},
    # 限制返回数量(可选)
    {"$limit": 5}
]

# 执行聚合查询
results = list(coll.aggregate(pipeline))

步骤2:整理数据,提取目标字段

遍历查询结果,把每个过滤后的活动条目展开,提取需要的字段:

import pandas as pd

# 初始化空列表存储整理后的数据
processed_data = []

for doc in results:
    for activity in doc["filtered_activities"]:
        # 提取字段并重组为字典
        entry = {
            "ActivityId": activity["activityId"],
            "manuelActivityTypeId": activity["manuelActivityInfo"]["manuelActivityTypeId"],
            "manuelActivityTypeName": activity["manuelActivityInfo"]["manuelActivityTypeName"],
            "manuelActivityMainSubjectId": activity["manuelActivityInfo"]["manuelActivityMainSubjectId"],
            "manuelActivityMainSubjectName": activity["manuelActivityInfo"]["manuelActivityMainSubjectName"],
            "manuelActivityDetailSubjectId": activity["manuelActivityInfo"]["manuelActivityDetailSubjectId"],
            "manuelActivityDetailSubjectName": activity["manuelActivityInfo"]["manuelActivityDetailSubjectName"]
        }
        processed_data.append(entry)

步骤3:转换为Pandas DataFrame

直接用整理好的列表生成DataFrame:

df = pd.DataFrame(processed_data)
# 查看结果
print(df.head())

补充说明

  • 如果原集合中manuelActivityInfo可能存在缺失(即使已经用$exists匹配),可以添加if "manuelActivityInfo" in activity的判断,避免KeyError。
  • 若数据量较大,建议分批次处理,避免一次性加载过多数据到内存。

内容的提问来源于stack exchange,提问作者Erdal Tutku YILMAZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:42:18