Use the $set
operator:
db.update({'indice':0, 'thread_id': {'$in': list_to_update}},
{'$set': {'updated':'yes'}},
multi=True)
Question
I have the following query
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)
where list_to_update is a list of thread_ids where I would like to insert the field 'updated' to 'yes'
I am receiving the following error
pymongo.errors.OperationFailure: multi update only works with $ operators
Any ideas?
La solution
Use the $set
operator:
db.update({'indice':0, 'thread_id': {'$in': list_to_update}},
{'$set': {'updated':'yes'}},
multi=True)
Autres conseils
from pymongo 3.1 use update_many
:
xxx.update_many({'indice':0, 'thread_id': {'$in': list_to_update}}, {'$set': {'updated':'yes'}})
you can pass upsert=False
if you dont need upsert.
Link to documentation:
here