Data types
SurrealQL allows you to describe data with specific data types. These data types are used to validate data and to generate the appropriate database schema.
Type | Description |
---|---|
any | Use this when you explicitly don't want to specify the field's data type. The field will allow any data type supported by SurrealDB. |
array | An array of items. The array type also allows you to define which types can be stored in the array and the max length.
|
set | A set of items. The set type also allows you to define which types can be stored in the set and the max length. Items are automatically deduplicated.
|
bool | Describes whether something is truthy or not. |
bytes | Stores a value in a byte array.
|
datetime | An ISO 8601 compliant data type that stores a date with time and time zone. |
decimal | Uses BigDecimal for storing any real number with arbitrary precision. |
duration | Store a value representing a length of time. Can be added or subtracted from datetimes or other durations. |
float | Store a value in a 64 bit float. |
int | Store a value in a 64 bit integer. |
number | Store numbers without specifying the type. SurrealDB will detect the type of number and store it using the minimal number of bytes. For numbers passed in as a string, this field will store the number in a BigDecimal. |
object | Store formatted objects containing values of any supported type with no limit to object depth or nesting. |
option | Makes types optional and guarantees the field to be either empty (NONE), or a number.
|
string | Describes a text-like value. |
record | Store a reference to another record. The value must be a Record ID.
|
geometry | RFC 7946 compliant data type for storing geometry in the GeoJson format.
|
Examples
geometry
-- Define a field with a single type
DEFINE FIELD location ON TABLE restaurant TYPE geometry<point>;
-- Define a field with any geometric type
DEFINE FIELD area ON TABLE restaurant TYPE geometry<feature>;
-- Define a field with specific geometric types
DEFINE FIELD area ON TABLE restaurant TYPE geometry<polygon|multipolygon|collection>;
bytes
-- Define a field with a single type
DEFINE FIELD image ON TABLE product TYPE bytes;
-- Create a record with a bytes field and set the value
CREATE foo SET value = <bytes>"bar";