code: func (t *Transaction) Delete(c *Collection, id string, deleted *bool) {
  	if c == nil {
  		t.setError(newNilCollectionError("Delete"))
  		return
  	}
  	// Delete any field indexes
  	// This must happen first, because it relies on reading the old field values
  	// from the hash for string indexes (if any)
  	t.deleteFieldIndexes(c, id)
  	var handler ReplyHandler
  	if deleted == nil {
  		handler = nil
  	} else {
  		handler = NewScanBoolHandler(deleted)
  	}
  	// Delete the main hash
  	t.Command("DEL", redis.Args{c.Name() + ":" + id}, handler)
  	// Remvoe the id from the index of all models for the given type
  	t.Command("SREM", redis.Args{c.IndexKey(), id}, nil)
  }
docs: // Delete removes a model with the given type and id in an existing transaction.
  // deleted will be set to true iff the model was successfully deleted when the
  // transaction is executed. If the no model with the given type and id existed,
  // the value of deleted will be set to false. Any errors encountered will be
  // added to the transaction and returned as an error when the transaction is
  // executed. You may pass in nil for deleted if you do not care whether or not
  // the model was deleted.