【问题标题】:Inserting data using PyMongo based on a defined data model基于定义的数据模型使用 PyMongo 插入数据
【发布时间】:2022-12-01 01:44:45
【问题描述】:

我有一个包含 250 行的数据集,如下所示:

在 MongoDB Compass 中,我插入第一行如下:

db.employees.insertOne([{"employee_id": 412153, 
                        "first_name": "Carrol", 
                        "last_name": "Dhin", 
                        "email": "carrol.dhin@company.com", 
                        "managing": [{"manager_id": 412153, "employee_id": 174543}], 
                        "department": [{"department_name": "Accounting", "department_budget": 500000}], 
                        "laptop": [{"serial_number": "CSS49745", 
                                    "manufacturer": "Lenovo", 
                                    "model": "X1 Gen 10", 
                                    "date_assigned": {$date: 01-15-2022}, 
                                    "installed_software": ["MS Office", "Adobe Acrobat", "Slack"]}]})

如果我想在 Python 中使用 PyMongo 将所有 250 行插入到数据库中,我如何确保每一行都按照我在 Mongo shell 中手动插入时使用的格式输入?

【问题讨论】:

  • @BellyBuster 我并没有为保持数据类型和值范围相同而苦苦挣扎,我如何确保说“department_name”和“annual_budget”按照我手动插入时的方式存储在“department”中

标签: python mongodb pymongo


【解决方案1】:
from pymongo import MongoClient
import pandas as pd

client = MongoClient(‘localhost’, 27017)
db = client.MD
collection = db.gammaCorp

df = pd.read_csv(‘ ’) #insert CSV name here

data = {}

for i in df.index:
    data['employee_id'] = df['employee_id'][i]
    data['first_name'] = df['first_name'][i]
    data['last_name'] = df['last_name'][i]
    data['email'] = df['email'][i]
    data['managing'] = [{'manager_id': df['employee_id'][i]}, {'employee_id': df['managing'][i]}]
    data['department'] = [{'department_name': df['department'][i]}, {'department_budget': df['department_budget'][i]}]
    data['laptop'] = [{'serial_number': df['serial_number'][i]}, {'manufacturer': df['manufacturer'][i]}, {'model': df['model'][i]}, {'date_assigned': df['date_assigned'][i]}, {'installed_software': df['installed_software'][i]}]
    
    collection.insert_one(data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多