<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def DataLookup(fieldVal, db, lookupType, fieldName, histObj={}):
 """ Return new field value based on single-value lookup against MongoDB :param string fieldVal: input value to lookup :param MongoClient db: MongoClient instance connected to MongoDB :param string lookupType: Type of lookup to perform/MongoDB collection name. One of 'genericLookup', 'fieldSpecificLookup', 'normLookup' :param string fieldName: Field name to query against :param dict histObj: History object to which changes should be appended """


    if lookupType == 'genericLookup':
        lookup_dict = {"find": _DataClean_(fieldVal)}
    elif lookupType in ['fieldSpecificLookup', 'normLookup']:
        lookup_dict = {"fieldName": fieldName, "find": _DataClean_(fieldVal)}
    else:
        raise ValueError("Invalid lookupType")

    field_val_new = fieldVal

    coll = db[lookupType]

    l_val = coll.find_one(lookup_dict, ['replace'])

    if l_val:
        field_val_new = l_val['replace'] if 'replace' in l_val else ''

    change = _CollectHistory_(lookupType=lookupType, fromVal=fieldVal,
                              toVal=field_val_new)

    hist_obj_upd = _CollectHistoryAgg_(contactHist=histObj,
                                       fieldHistObj=change,
                                       fieldName=fieldName)

    return field_val_new, hist_obj_upd