code: def _find_update_fields(cls, field, doc):
          
  
          def find_partial_matches():
              for key in doc:
                  if len(key) > len(field):
                      # Handle case where field is a prefix of key, eg field is
                      # 'a' and key is 'a.b'.
                      if key.startswith(field) and key[len(field)] == ".":
                          yield [key], doc[key]
                          # Continue searching, there may be multiple matches.
                          # For example, field 'a' should match 'a.b' and 'a.c'.
                  elif len(key) < len(field):
                      # Handle case where key is a prefix of field, eg field is
                      # 'a.b' and key is 'a'.
                      if field.startswith(key) and field[len(key)] == ".":
                          # Search for the remaining part of the field
                          matched = cls._find_field(field[len(key) + 1 :], doc[key])
                          if matched:
                              # Add the top level key to the path.
                              match = matched[0]
                              match[0].insert(0, key)
                              yield match
                          # Stop searching, it's not possible for any other
                          # keys in the update doc to match this field.
                          return
  
          try:
              return [([field], doc[field])]
          except KeyError:
              # Field does not exactly match any key in the update doc.
              return list(find_partial_matches())
docs: Find the fields in the update document which match the given field.
  
          Both the field and the top level keys in the doc may be in dot
          notation, eg "a.b.c". Returns a list of tuples (path, field_value) or
          the empty list if the field is not present.