【问题标题】:Insert post data into MongoDB将帖子数据插入 MongoDB
【发布时间】:2014-02-25 23:40:09
【问题描述】:

我在视图中发布了一行/多行字段,每行都对它们的名称进行编号,例如01_field101_field202_field102_field2等。用户可以添加和删除行,所以我不知道发布了多少行。换句话说,我希望能够按行号对帖子键和值进行分组。

这是发布内容的示例,即“items”的值

[('01_cost', 'value'), ('01_date_end', 'value'), ('01_date_start', 'value'), ('01_hours', 'value'), ('01_resource', 'value'), ('01_task_desc', 'value'), ('02_cost', 'value'), ('02_date_end', 'value'), ('02_date_start', 'value'), ('02_hours', 'value'), ('02_resource', 'value'), ('02_task_desc', 'value'), ('job_description', 'value'), ('job_number', 'value')]

我正在尝试循环排序的帖子项目并以以下嵌套格式插入 MongoDB:

{
    "row1": {
                "01_field1": "value", 
                "01_field2": "value"
            },
    "row2": {
                "02_field1": "value", 
                "02_field2": "value"
            },
}

我目前正在尝试为每一行生成一个字典列表,但这似乎没有像上面那样插入到 mongo 中。这是我目前拥有的(不工作的)代码。

items = sorted(request.POST.items())

project_data = []
d = {}
etid = '01'

for key, value in items:
    #get the number from each posted field name
    tid = re.findall(r'\d+', key)

    if etid == tid:
        d.update({key:value})
    else:
        project_data.append(d)
    etid = tid

project_id = project.insert(project_data)

【问题讨论】:

  • 项目是收藏​​吗?你收到任何错误吗?你连接到数据库了吗? project.find_all() 会返回任何东西吗?准备好插入后,发布project_data 的内容。
  • 项目是一个 Mongo 集合。没有错误,我已经将数据插入 Mongo,所以连接很好。我的挑战是将帖子值转换为可以根据需要插入 Mongo 的格式。我认为我正在寻找 dict/lists 和 pymongo 插入处理的正确组合。
  • 我在这里看到的问题是 project_data 是一个列表,而您显示为所需插入格式的结构是一个字典。
  • 另外,您在列表中多次附加相同的字典,因此您的列表可能仅包含 n 次相同的字典。你能发布一个输入的例子吗?
  • 好点!!将返回并查看代码。谢谢。

标签: python mongodb pymongo bottle


【解决方案1】:

可能只需更改以下内容即可:

project_data = []

=>

project_data = {}

else:
    project_data.append(d)

else:
    d = {}
    project_data['row' + str(tid] = d

这应该会让你的结构更接近你正在寻找的东西。

【讨论】:

  • 非常感谢,更接近了!我将 .put 更改为 project_data[str(tid)] = d,因为我收到 put 错误。你让我走上了正轨谢谢!
  • 是的,很抱歉混淆了,这些天我每天要切换几次语言。
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 2015-03-26
  • 2018-06-14
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多