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

如何用Python检查MongoDB Cloud中数据是否全部插入及插入行数

检查MongoDB插入行数及数据完整性的方法

一、先查当前插入的文档数量

你可以直接在Python代码里用以下命令查看集合里的总文档数:

# 统计集合所有文档数
doc_count = col.count_documents({})
print(f"MongoDB集合中当前文档数:{doc_count}")

或者打开MongoDB Cloud的Compass界面,找到对应的集合,直接查看界面显示的文档数量。

二、你的代码问题(为什么数据少)

你现在的代码里,df.to_dict()默认会把整个DataFrame转换成单个字典(键是列名,值是该列所有行的数组),然后insert_many([data])实际上只插入了1条文档,这就是你觉得数据远少于实际的原因。

三、正确的批量插入代码

要把CSV的每一行都作为单独的文档插入,需要用df.to_dict('records')参数,它会生成一个列表,每个元素对应一行数据的字典:

df = pd.read_csv('FitBit data.csv')
# 将每行数据转为字典,生成文档列表
data = df.to_dict('records')
db = client['mydatabase']
col = db['Data_fitbit']

# 执行批量插入并获取结果
result = col.insert_many(data)
# 打印成功插入的文档数量
print(f"成功插入 {len(result.inserted_ids)} 条文档")

四、确认所有数据是否插入完整

1. 对比总行数

先看CSV的总行数,再和MongoDB的文档数对比:

# 查看CSV的总行数(pd.read_csv默认跳过表头,len(df)即为数据行数)
csv_row_count = len(df)
print(f"CSV数据总行数:{csv_row_count}")

# 查看MongoDB集合的文档数
mongo_doc_count = col.count_documents({})
print(f"MongoDB集合文档数:{mongo_doc_count}")

如果两个数字一致,说明数据全部插入;不一致的话,检查是否有重复数据、字段类型不匹配或者插入时的报错。

2. 抽样验证数据一致性

选取CSV里的几条数据,在MongoDB中查询对比内容是否一致,比如用唯一标识(如用户ID、时间戳)查询:

# 取CSV第3行的唯一字段(假设列名为'Id')
sample_id = df.iloc[2]['Id']
# 在MongoDB中查询对应文档
sample_doc = col.find_one({'Id': sample_id})

# 打印对比
print("CSV中的样本数据:")
print(df.iloc[2].to_dict())
print("\nMongoDB中的对应文档:")
print(sample_doc)

3. 捕获插入错误

如果插入过程中有部分文档失败,insert_many()会抛出BulkWriteError,可以捕获异常查看具体错误信息:

from pymongo.errors import BulkWriteError

try:
    result = col.insert_many(data)
    print(f"成功插入 {len(result.inserted_ids)} 条文档")
except BulkWriteError as e:
    print(f"插入错误详情:{e.details}")
    print(f"成功插入 {e.details['nInserted']} 条,失败 {len(e.details['writeErrors'])} 条")

内容的提问来源于stack exchange,提问作者Abhishek Kashyap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:15:41