将帖子数据插入MongoDB

时间:2014-02-25 14:53:04

标签: python mongodb pymongo bottle

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

以下是发布内容的示例,即“项目”的价值

[('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"
            },
}

我目前正在尝试为每一行生成一个dicts列表,但这似乎并没有像上面那样插入到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)

1 个答案:

答案 0 :(得分:0)

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

project_data = []

=>

project_data = {}

else:
    project_data.append(d)

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

这可以让你的结构更接近你想要的结构。