code: def update(self, table_name, primary_key, instance):
          
          assert isinstance(primary_key, dict)
          assert isinstance(instance, BaseDocument)
          collection = self._db[table_name]
  
          # work with a copy of the document, as the direct type change of the _id field
          # is later negated by the `BaseDocument.to_json` method
          document = instance.document
          if '_id' in document:
              document['_id'] = ObjectId(document['_id'])
  
          update_result = collection.replace_one(filter=primary_key, replacement=document, upsert=True)
          if update_result.upserted_id:
              instance['_id'] = update_result.upserted_id
          return update_result.upserted_id
docs: replaces document identified by the primary_key or creates one if a matching document does not exist