You can just do
1) If you want to add one entry
def update_tags(ref, new_tag): coll.update({'ref': ref}, {'$push': {'tags': new_tag}})
eg:
{ "_id" : ObjectId("561c199e038e42b10956e3fc"), "tags" : [ "tag1", "tag2", "tag3" ], "ref" : "4780" } >> update_tags("4780", "tag4") {'updatedExisting': True, u'nModified': 1, u'ok': 1, u'n': 1} >> coll.find_one({"ref":"4780"}) { "_id" : ObjectId("561c199e038e42b10956e3fc"), "tags" : [ "tag1", "tag2", "tag3" , "tag4" ], "ref" : "4780" }
2) If you want to add multiple entries
def update_tags(ref, new_tag): coll.update({'ref': ref}, {'$pushAll': {'tags': new_tag}}) #type of new_tag is list
eg:
{ "_id" : ObjectId("561c199e038e42b10956e3fc"), "tags" : [ "tag1", "tag2", "tag3" ], "ref" : "4780" } >> update_tags("4780", ["tag5", "tag6", "tag7"]) {'updatedExisting': True, u'nModified': 1, u'ok': 1, u'n': 1} >> coll.find_one({"ref":"4780"}) { "_id" : ObjectId("561c199e038e42b10956e3fc"), "tags" : [ "tag1", "tag2", "tag3" , "tag4" , "tag5", "tag6", "tag7" ], "ref" : "4780" }
Note. If the key is not already present, then mongo will create a new key.