code: def update_collection(self, collection):
          
          node = self.node
          flow = node if node.is_flow else node.flow
  
          # Build the key used to store the entry in the document.
          key = node.name
          if node.is_task:
              key = "w" + str(node.pos[0]) + "_t" + str(node.pos[1])
          elif node.is_work:
              key = "w" + str(node.pos)
  
          db = collection.database
  
          # Save files with GridFs first in order to get the ID.
          if self.gridfs_files:
              import gridfs
              fs = gridfs.GridFS(db)
              for ext, gridfile in self.gridfs_files.items():
                  logger.info("gridfs: about to put file:", str(gridfile))
                  # Here we set gridfile.fs_id that will be stored in the mondodb document
                  try:
                      with open(gridfile.path, "r" + gridfile.mode) as f:
                          gridfile.fs_id = fs.put(f, filename=gridfile.path)
                  except IOError as exc:
                      logger.critical(str(exc))
  
          if flow.mongo_id is None:
              # Flow does not have a mongo_id, allocate doc for the flow and save its id.
              flow.mongo_id = collection.insert({})
              print("Creating flow.mongo_id", flow.mongo_id, type(flow.mongo_id))
  
          # Get the document from flow.mongo_id and update it.
          doc = collection.find_one({"_id": flow.mongo_id})
          if key in doc:
              raise ValueError("%s is already in doc!" % key)
          doc[key] = self.as_dict()
  
          collection.save(doc)
docs: Update a mongodb collection.