Back to top

Data types

SurrealQL allows you to describe data with specific data types.

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.
  • array
  • array<string>
  • array<string, 10>
set An set of items. The array type also allows you to define which types can be stored in the array and the max length. Items are automatically deduplicated.
  • set
  • set<string>
  • set<string, 10>
bool Describes whether something is thruthy or not.
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.
  • option<number>
string Describes a text-like value.
record Store a reference to another record. The value must be a Record ID.
  • record
  • record<string>
  • record<string | number>
geometry RFC 7946 compliant data type for storing geometry in the GeoJson format.

Geometric Types include:

  • geometry<feature>
  • geometry<point>
  • geometry<line>
  • geometry<polygon>
  • geometry<multipoint>
  • geometry<multiline>
  • geometry<multipolygon>
  • geometry<collection>

-- 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>;