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?

Was it helpful?

Solution

Use the $set operator:

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top