在update方法中,包含列表的查询参数(pymongo)

时间:2014-01-25 19:55:15

标签: mongodb pymongo

我有一本字典。我需要将第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的方式一样去做。

1 个答案:

答案 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/