# `Aerospike.Op.Exp`
[🔗](https://github.com/luisgabrielroldan/aerospike_driver/blob/v0.3.1/lib/aerospike/op/exp.ex#L1)

Expression operations for `Aerospike.operate/4`.

Expression operations evaluate an `Aerospike.Exp` on the server. Reads return
the expression result under the requested response bin name; writes store the
result into the target bin.

    Aerospike.operate(cluster, key, [
      Aerospike.Op.Exp.read("projected", Aerospike.Exp.int_bin("count")),
      Aerospike.Op.Exp.write("computed", Aerospike.Exp.int(99))
    ])

This module accepts the expression builders exposed by `Aerospike.Exp`; it
does not accept arbitrary encoded payloads.

# `flags`

```elixir
@type flags() :: atom() | [atom()] | non_neg_integer() | {:raw, non_neg_integer()}
```

Options accepted by expression operate builders.

Supported key:

* `:flags` - expression read or write flags. Defaults to `:default`.

# `opts`

```elixir
@type opts() :: [{:flags, flags()}]
```

# `t`

```elixir
@opaque t()
```

Opaque expression operation for `Aerospike.operate/4`.

# `read`

```elixir
@spec read(String.t() | atom(), Aerospike.Exp.t(), opts()) :: t()
```

Reads the result of a server-side expression into `bin_name`.

The optional `:flags` value accepts `:default`, `:eval_no_fail`, or a list
of those atoms. Compatibility callers may pass a non-negative integer; use
`{:raw, integer}` when deliberately sending an unnamed server value.

    Aerospike.Op.Exp.read("projected", Aerospike.Exp.int_bin("count"))

# `write`

```elixir
@spec write(String.t() | atom(), Aerospike.Exp.t(), opts()) :: t()
```

Writes the result of a server-side expression to `bin_name`.

The optional `:flags` value accepts `:default`, `:create_only`,
`:update_only`, `:allow_delete`, `:policy_no_fail`, `:eval_no_fail`, or a
list of those atoms. Compatibility callers may pass a non-negative integer;
use `{:raw, integer}` when deliberately sending an unnamed server value.

    Aerospike.Op.Exp.write("computed", Aerospike.Exp.int(99))

---

*Consult [api-reference.md](api-reference.md) for complete listing*
