You don't need the positional operator $
which equates to __S__
in mongoengine as you aren't replacing / updating a position in the list.
As you probably don't want to repeat the tags, you should use $addToSet. You can do this in mongoengine like so:
ItemData.update(add_to_set__tags=['tag1', 'tag2'])
Passing in a list to add_to_set
will automatically convert it to an $addToSet
with $each
.