Pymongo多更新查询

时间:2014-04-28 17:08:41

标签: python mongodb pymongo

我有以下查询

DB_HOST = '127.0.0.1'
COLLECTION = 'scraper'
db = pymongo.MongoClient(DB_HOST)[COLLECTION]['scrap']
db.update({'indice':0, 'thread_id':{'$in':list_to_update}},{'updated':'yes'}, multi=True)

其中list_to_update是一个thread_ids列表,我想插入字段'更新'到了'是'

我收到以下错误

pymongo.errors.OperationFailure: multi update only works with $ operators

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

使用$set运算符:

db.update({'indice':0, 'thread_id': {'$in': list_to_update}},
          {'$set': {'updated':'yes'}}, 
          multi=True)

答案 1 :(得分:6)

来自pymongo 3.1的

使用update_many

xxx.update_many({'indice':0, 'thread_id': {'$in': list_to_update}}, {'$set': {'updated':'yes'}})

如果你不需要upsert,你可以通过upsert=False。 链接到文档: here