我有一本字典。我需要将第2列插入到对应于第1列(键)的mongodb中。
说这是字典:
values = {'a':['1','2','3'],
'b':['1','2'],
'c':['3','4'] }
现在我正在这样做:
for k,v in values.items():
col4.update({"name":k},{"$set":{"fieldName":v}})
但这需要3次访问数据库。是否有可能像$ in的方式一样去做。
答案 0 :(得分:0)
在您的代码中,您可以在name
字段旁边找到每个文档,并将其fieldName
设置为v
。 Mongo中没有update
操作可以一次性为多个文档执行此操作。
但是,有一个批量插入语句,它比多次插入或更新更有效。 http://docs.mongodb.org/manual/core/bulk-inserts/
我认为我之前并不太明白你在问什么,并在下面写下了答案,但我仍然不确定$in
你的意思。也许您可以在DB中更新前后提供数据示例,这样就可以绝对清楚您要实现的目标。
老答案......(我很快就会编辑)
您需要重新构建循环。通过将{field: newValue}
添加到$set
子句来构建查询(不运行)。循环完成后,您将得到{$set:{"a": 1, "b": 1, "c": 3}}
的模拟。然后,您将一次更新所有字段。
这是官方文件: http://docs.mongodb.org/manual/reference/operator/update/set/