code: func (db *DB) HDel(key []byte, args ...[]byte) (int64, error) {
  	t := db.hashBatch
  
  	var ek []byte
  	var v []byte
  	var err error
  
  	t.Lock()
  	defer t.Unlock()
  
  	it := db.bucket.NewIterator()
  	defer it.Close()
  
  	var num int64
  	for i := 0; i < len(args); i++ {
  		if err := checkHashKFSize(key, args[i]); err != nil {
  			return 0, err
  		}
  
  		ek = db.hEncodeHashKey(key, args[i])
  
  		v = it.RawFind(ek)
  		if v == nil {
  			continue
  		} else {
  			num++
  			t.Delete(ek)
  		}
  	}
  
  	if _, err = db.hIncrSize(key, -num); err != nil {
  		return 0, err
  	}
  
  	err = t.Commit()
  
  	return num, err
  }
docs: // HDel deletes the fields.