【发布时间】:2014-02-25 23:40:09
【问题描述】:
我在视图中发布了一行/多行字段,每行都对它们的名称进行编号,例如01_field1、01_field2、02_field1、02_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