Si vous examinez le code source de pymongo , vous constaterez que la update la fonction ne recevra aucun paramètre sur arrayFilters , vous devez donc utiliser update_one , qui accepterait un paramètre facultatif nommé array_filters :
db.dept.update_one(
{"emps._id" : {"$gte" : 1111, "$lte" : 1114}},
{"$inc" : {"emps.$[idx].salary" : 20000}},
upsert=True,
array_filters=[{"idx._id" : {"$gte" : 1111, "$lte" : 1114}}]
)