code: def get_dos_from_id(self, task_id):
          
          args = {'task_id': task_id}
          fields = ['calculations']
          structure = self.get_structure_from_id(task_id)
          dosid = None
          for r in self.query(fields, args):
              dosid = r['calculations'][-1]['dos_fs_id']
          if dosid is not None:
              self._fs = gridfs.GridFS(self.db, 'dos_fs')
              with self._fs.get(dosid) as dosfile:
                  s = dosfile.read()
                  try:
                      d = json.loads(s)
                  except:
                      s = zlib.decompress(s)
                      d = json.loads(s.decode("utf-8"))
                  tdos = Dos.from_dict(d)
                  pdoss = {}
                  for i in range(len(d['pdos'])):
                      ados = d['pdos'][i]
                      all_ados = {}
                      for j in range(len(ados)):
                          orb = Orbital(j)
                          odos = ados[str(orb)]
                          all_ados[orb] = {Spin(int(k)): v
                                           for k, v
                                           in odos['densities'].items()}
                      pdoss[structure[i]] = all_ados
                  return CompleteDos(structure, tdos, pdoss)
          return None
docs: Overrides the get_dos_from_id for the MIT gridfs format.