Skip to main content
Version: Next version 🚧

Query modules C++ API

This is the API documentation for mgp.hpp, which contains declarations of all functions in the C++ API for implementing query module procedures and functions. The source file can be found in the Memgraph installation directory, under /usr/include/memgraph.

tip

To see how to implement query modules in C++, take a look at the example we provided.

tip

If you install any C++ modules after running Memgraph, you’ll need to load them into Memgraph or restart Memgraph in order to use them.

Functions and procedures

With this API it’s possible to extend your Cypher queries with functions and procedures with AddProcedure and AddFunction.

tip

The API needs memory access to add procedures and functions; this can be done with mgp::memory = memory;.

Functions are simple operations that return a single value and can be used in any expression or predicate.

Procedures are more complex computations that may modify the graph, and their output is available to later processing steps in your query. A procedure may only be run from CALL clauses. The output is a stream of records that is made accessible with a YIELD clause.

AddProcedure

Add a procedure to your query module. The procedure is registered as [QUERY_MODULE_NAME].[PROC_NAME] and can be used in Cypher queries.

void AddProcedure(
mgp_proc_cb callback,
std::string_view name,
ProdecureType proc_type,
std::vector<mgp::Parameter> parameters,
std::vector<Return> returns,
mgp_module *module,
mgp_memory *memory);

Input

  • callback: procedure callback
  • name: procedure name
  • proc_type: procedure type (read/write)
  • parameters: vector (list) of procedure parameters
  • returns: vector (list) of procedure return values
  • module: the query module that the procedure is added to
  • memory: access to memory

ProcedureType

Enum class for Cypher procedure types.

  • ProcedureType::Read: read procedure
  • ProcedureType::Write: write procedure

AddFunction

Add a function to your query module. The function is registered as [QUERY_MODULE_NAME].[FUNC_NAME] and can be used in Cypher queries.

void AddFunction(
mgp_func_cb callback,
std::string_view name,
std::vector<mgp::Parameter> parameters,
std::vector<Return> returns,
mgp_module *module,
mgp_memory *memory);

Input

  • callback: function callback
  • name: function name
  • parameters: vector (list) of function parameters
  • returns: vector (list) of function return values
  • module: the query module that the procedure is added to
  • memory: access to memory

Parameter

Represents a procedure/function parameter. Parameters are defined by their name, type, and (if optional) default value.

Constructors

Creates a non-optional parameter with the given name and type.

Parameter(std::string_view name, mgp::Type type)

Creates an optional Boolean parameter with the given name and default_value.

Parameter(std::string_view name, mgp::Type type, bool default_value)

Creates an optional integer parameter with the given name and default_value.

Parameter(std::string_view name, mgp::Type type, bool default_value)

Creates an optional floating-point parameter with the given name and default_value.

Parameter(std::string_view name, mgp::Type type, bool default_value)

Creates an optional string parameter with the given name and default_value.

Parameter(std::string_view name, mgp::Type type, std::string_view default_value)
Parameter(std::string_view name, mgp::Type type, const char *default_value)

Creates a non-optional list parameter with the given name and item_type. The list_type parameter is organized as follows: {Type::List, Type::[ITEM_TYPE]}.

Parameter(std::string_view name, std::pair<mgp::Type, mgp::Type> list_type)

Creates an optional list parameter with the given name, item_type, and default_value. The list_type parameter is organized as follows: {Type::List, Type::[ITEM_TYPE]}.

Parameter(std::string_view name, std::pair<mgp::Type, mgp::Type> list_type, mgp::Value default_value)

Member variables

NameTypeDescription
namestd::string_viewparameter name
type_mgp::Typeparameter type
list_item_type_mgp::Type(list parameters) item type
optionalboolwhether the parameter is optional
default_valuemgp::Value(optional parameters) default value

Return

Represents a procedure/function return value. Values are defined by their name and type.

Constructors

Creates a return value with the given name and type.

Return(std::string_view name, mgp::Type type) 

Creates a return value with the given name and list_type. The list_type parameter is organized as follows: {Type::List, Type::[ITEM_TYPE]}.

Return(std::string_view name, std::pair<mgp::Type, mgp::Type> list_type)

Member variables

NameTypeDescription
namestd::string_viewreturn name
type_mgp::Typereturn type
list_item_type_mgp::Type(list values) item type

RecordFactory

Factory class for Record.

Constructors

explicit RecordFactory(mgp_result *result)

Member functions

NameDescription
NewRecordAdds a new result record.

Record

Represents a record - the building block of Cypher procedure results. Each result is a stream of records, and a function’s record is a sequence of (field name: output value) pairs.

Constructors

explicit Record(mgp_result_record *record)

Member functions

NameDescription
InsertInserts a value of given type under field field_name.
Insert

Inserts a value of given type under field field_name.

  void Insert(const char *field_name, bool value)
  void Insert(const char *field_name, std::int64_t value)
  void Insert(const char *field_name, double value)
  void Insert(const char *field_name, std::string_view value)
  void Insert(const char *field_name, const char *value)
  void Insert(const char *field_name, const mgp::List &value)
  void Insert(const char *field_name, const mgp::Map &value)
  void Insert(const char *field_name, const mgp::Node &value)
  void Insert(const char *field_name, const mgp::Relationship &value)
  void Insert(const char *field_name, const mgp::Path &value)
  void Insert(const char *field_name, const mgp::Date &value)
  void Insert(const char *field_name, const mgp::LocalTime value)
  void Insert(const char *field_name, const mgp::LocalDateTime value)
  void Insert(const char *field_name, const mgp::Duration value)

Result

Represents a result - the single return value of a Cypher function.

Constructors

explicit Result(mgp_func_result *result)

Member functions

NameDescription
SetValueSets a return value of given type.
SetValue

Sets a return value of given type.

  void SetValue(bool value)
  void SetValue(std::int64_t value)
  void SetValue(double value)
  void SetValue(std::string_view value)
  void SetValue(const char *value)
  void SetValue(const mgp::List &value)
  void SetValue(const mgp::Map &value)
  void SetValue(const mgp::Node &value)
  void SetValue(const mgp::Relationship &value)
  void SetValue(const mgp::Path &value)
  void SetValue(const mgp::Date &value)
  void SetValue(const mgp::LocalTime value)
  void SetValue(const mgp::LocalDateTime value)
  void SetValue(const mgp::Duration value)

Graph API

This section covers the interface for working with the Memgraph DB graph using the C++ API. A description of data types is available here.

Graph

Constructors

explicit Graph(mgp_graph *graph)

Member functions

NameDescription
OrderReturns the graph order (number of nodes).
SizeReturns the graph size (number of relationships).
NodesReturns an iterable structure of the graph’s nodes.
RelationshipsReturns an iterable structure of the graph’s relationships.
GetNodeByIdReturns the graph node with the given ID.
ContainsNodeReturns whether the graph contains the given node (accepts node or its ID).
ContainsRelationshipReturns whether the graph contains the given relationship (accepts relationship or its ID).
IsMutableReturns whether the graph is mutable.
CreateNodeCreates a node and adds it to the graph.
DeleteNodeDeletes a node from the graph.
DetachDeleteNodeDeletes a node and all its incident edges from the graph.
CreateRelationshipCreates a relationship of type type between nodes from and to and adds it to the graph.
DeleteRelationshipDeletes a relationship from the graph.
Order

Returns the graph order (number of nodes).

int64_t Order() const
Size

Returns the graph size (number of relationships).

int64_t Size() const
Nodes

Returns an iterable structure of the graph’s nodes.

mgp::GraphNodes Nodes() const
Relationships

Returns an iterable structure of the graph’s relationships.

mgp::GraphRelationships Relationships() const
GetNodeById

Returns the graph node with the given ID.

mgp::Node GetNodeById(const mgp::Id node_id) const
ContainsNode

Returns whether the graph contains a node with the given ID.

bool ContainsNode(const Id node_id) const

Returns whether the graph contains the given node.

bool ContainsNode(const Node &node) const
ContainsRelationship
bool ContainsRelationship(const Id relationship_id) const
bool ContainsRelationship(const Relationship &relationship) const
IsMutable

Returns whether the graph is mutable.

bool IsMutable() const
CreateNode

Creates a node and adds it to the graph.

mgp::Node CreateNode();
DeleteNode

Deletes a node from the graph.

void DeleteNode(const mgp::Node &node)
DetachDeleteNode

Deletes a node and all its incident edges from the graph.

void DetachDeleteNode(const mgp::Node &node)
CreateRelationship

Creates a relationship of type type between nodes from and to and adds it to the graph.

mgp::Relationship CreateRelationship(const mgp::Node &from, const mgp::Node &to, const std::string_view type)
DeleteRelationship

Deletes a relationship from the graph.

void DeleteRelationship(const mgp::Relationship &relationship)

GraphNodes

Auxiliary class providing an iterable view of the nodes contained in the graph. GraphNodes values may only be used for iteration to obtain the values stored within.

Constructors
explicit GraphNodes(mgp_vertices_iterator *nodes_iterator)
Member variables
NameTypeDescription
Iteratormgp::GraphNodes::IteratorConst forward iterator for GraphNodes.
Member functions
NameDescription
begin
end
cbegin
cend
Returns the beginning/end of the GraphNodes iterator.

GraphRelationships

Auxiliary class providing an iterable view of the relationships contained in the graph. GraphRelationships values may only be used for iteration to obtain the values stored within.

Constructors
explicit GraphRelationships(mgp_graph *graph)
Member variables
NameTypeDescription
Iteratormgp::GraphRelationships::IteratorConst forward iterator for GraphRelationships.
Member functions
NameDescription
begin
end
cbegin
cend
Returns the beginning/end of the GraphRelationship iterator.

Node

Represents a node (vertex) of the Memgraph graph.

Constructors

Creates a Node from the copy of the given mgp_vertex.

explicit Node(mgp_vertex *ptr)
explicit Node(const mgp_vertex *const_ptr)

Copy and move constructors:

Node(const Node &other)
Node(Node &&other) noexcept

Member functions

NameDescription
IdReturns the node’s ID.
LabelsReturns an iterable & indexable structure of the node’s labels.
HasLabelReturns whether the node has the given label.
PropertiesReturns an iterable & indexable structure of the node’s properties.
InRelationshipsReturns an iterable structure of the node’s inbound relationships.
OutRelationshipsReturns an iterable structure of the node’s outbound relationships.
AddLabelAdds a label to the node.
Id

Returns the node’s ID.

mgp::Id Id() const
Labels

Returns an iterable & indexable structure of the node’s labels.

mgp::Labels Labels() const
HasLabel

Returns whether the node has the given label.

bool HasLabel(std::string_view label) const
Properties

Returns an iterable & indexable structure of the node’s properties.

mgp::Properties Properties() const
InRelationships

Returns an iterable structure of the node’s inbound relationships.

mgp::Relationships InRelationships() const
OutRelationships

Returns an iterable structure of the node’s outbound relationships.

mgp::Relationships OutRelationships() const
AddLabel

Adds a label to the node.

void AddLabel(const std::string_view label)

Operators

NameDescription
operator[]Returns the value of the node’s property_name property.
operator==
operator!=
operator<
comparison operators
operator[]

Returns the value of the node’s property_name property.

const mgp::Value operator[](std::string_view property_name) const

Relationship

Represents a relationship (edge) of the Memgraph graph.

Constructors

Creates a Relationship from the copy of the given mgp_edge.

explicit Relationship(mgp_edge *ptr)
explicit Relationship(const mgp_edge *const_ptr)

Copy and move constructors:

Relationship(const Relationship &other)
Relationship(Relationship &&other) noexcept

Member functions

NameDescription
IdReturns the relationship’s ID.
TypeReturns the relationship’s type.
PropertiesReturns an iterable & indexable structure of the relationship’s properties.
FromReturns the relationship’s source node.
ToReturns the relationship’s destination node.
Id

Returns the relationship’s ID.

mgp::Id Id() const
Type

Returns the relationship’s type.

std::string_view Type() const
Properties

Returns an iterable & indexable structure of the relationship’s properties.

mgp::Properties Properties() const
From

Returns the relationship’s source node.

mgp::Node From() const
To

Returns the relationship’s source node.

mgp::Node To() const

Operators

NameDescription
operator[]Returns the value of the relationship’s property_name property.
operator==
operator!=
operator<
comparison operators
operator[]

Returns the value of the relationship’s property_name property.

const mgp::Value operator[](std::string_view property_name) const

Relationships

Auxiliary class providing an iterable view of the relationships adjacent to a node. Relationships values may only be used for iteration to obtain the values stored within.

Constructors
explicit Relationships(mgp_edges_iterator *relationships_iterator)
Member variables
NameTypeDescription
Iteratormgp::Relationships::IteratorConst forward iterator for Relationships.
Member functions
NameDescription
begin
end
cbegin
cend
Returns the beginning/end of the Relationships iterator.

Id

Represents the unique ID possessed by all Memgraph nodes and relationships.

Member functions

NameDescription
FromUintConstructs an Id object from uint64_t.
FromIntConstructs an Id object from int64_t.
AsUintReturns the ID value as uint64_t.
AsIntReturns the ID value as int64_t.
FromUint

Constructs an Id object from uint64_t.

static mgp::Id FromUint(uint64_t id)
FromInt

Constructs an Id object from int64_t.

static mgp::Id FromInt(int64_t id)
AsUint

Returns the ID value as uint64_t.

int64_t AsUint() const
AsInt

Returns the ID value as int64_t.

int64_t AsInt() const

Operators

NameDescription
operator==
operator!=
operator<
comparison operators

Properties

Represents a view of node/relationship properties. The properties are shown as a map of key-value pairs with string keys and mgp::Value values.

Constructors

explicit Properties(mgp_properties_iterator *properties_iterator)

Member functions

NameDescription
SizeReturns the size of the properties map.
EmptyReturns whether the properties map is empty.
Size

Returns the size of the properties map.

size_t Size() const
Empty

Returns whether the properties map is empty.

bool Empty() const

Operators

NameDescription
operator[]Returns the value associated with the given key. If there’s no such value, the behavior is undefined.
operator==
operator!=
comparison operators
operator[]

Returns the value associated with the given key. If there’s no such value, the behavior is undefined. Each key-value pair needs to be checked, ensuing O(n) time complexity.

const mgp::Value operator[](const std::string_view key) const

Labels

Represents a view of node labels.

Constructors

explicit Labels(mgp_vertex *node_ptr) 

Member variables

NameTypeDescription
Iteratormgp::Labels::IteratorConst forward iterator for Labels.

Member functions

NameDescription
SizeReturns the number of the labels, i.e. the size of their list.
begin
end
cbegin
cend
Returns the beginning/end of the Labels iterator.
Size

Returns the number of the labels, i.e. the size of their list.

size_t Size() const

Operators

NameDescription
operator[]Returns the node’s label at position index.
operator[]

Returns the node’s label at position index.

std::string_view operator[](size_t index) const

Date

Represents a date with a year, month, and day.

Constructors

Creates a Date object from the copy of the given mgp_date.

explicit Date(mgp_date *ptr)
explicit Date(const mgp_date *const_ptr)

Creates a Date object from the given string representing a date in the ISO 8601 format (YYYY-MM-DD, YYYYMMDD, or YYYY-MM).

explicit Date(std::string_view string)

Creates a Date object with the given year, month, and day properties.

Date(int year, int month, int day)

Copy and move constructors:

Date(const Date &other)
Date(Date &&other) noexcept

Member functions

NameDescription
NowReturns the current Date.
YearReturns the date’s year property.
MonthReturns the date’s month property.
DayReturns the date’s day property.
TimestampReturns the date’s timestamp (microseconds since Unix epoch).
Now

Returns the current Date.

static mgp::Date Now()
Year

Returns the date’s year property.

int Year() const
Month

Returns the date’s month property.

int Month() const
Day

Returns the date’s day property.

int Day() const
Timestamp

Returns the date’s timestamp (microseconds since Unix epoch).

int64_t Timestamp() const

Operators

NameDescription
operator+
operator-
arithmetic operators
operator==
operator<
comparison operators
operator-
mgp::Date operator-(const mgp::Duration &dur) const
mgp::Duration operator-(const mgp::Date &other) const
operator[]

Returns the value of the relationship’s property_name property.

const mgp::Value operator[](std::string_view property_name) const

LocalTime

Represents a time within the day without timezone information.

Constructors

Creates a LocalTime object from the copy of the given mgp_local_time.

explicit LocalTime(mgp_local_time *ptr)
explicit LocalTime(const mgp_local_time *const_ptr)

Creates a LocalTime object from the given string representing a date in the ISO 8601 format ([T]hh:mm:ss, [T]hh:mm, [T]hhmmss, [T]hhmm, or [T]hh).

explicit LocalTime(std::string_view string)

Creates a LocalTime object with the given hour, minute, second, millisecond, and microsecond properties.

LocalTime(int hour, int minute, int second, int millisecond, int microsecond)

Copy and move constructors:

LocalTime(const LocalTime &other)
LocalTime(LocalTime &&other) noexcept

Member functions

NameDescription
NowReturns the current LocalTime.
HourReturns the object’s hour property.
MinuteReturns the object’s minute property.
SecondReturns the object’s second property.
MillisecondReturns the object’s millisecond property.
MicrosecondReturns the object’s microsecond property.
TimestampReturns the object’s timestamp (microseconds since Unix epoch).
Now

Returns the current LocalTime.

static mgp::LocalTime Now()
Hour

Returns the object’s hour property.

int Hour() const
Minute

Returns the object’s minute property.

int Minute() const
Second

Returns the object’s second property.

int Second() const
Millisecond

Returns the object’s millisecond property.

int Millisecond() const
Microsecond

Returns the object’s microsecond property.

int Microsecond() const
Timestamp

Returns the object’s timestamp (microseconds since Unix epoch).

int64_t Timestamp() const

Operators

NameDescription
operator+
operator-
arithmetic operators
operator==
operator<
comparison operators
operator-
mgp::LocalTime operator-(const mgp::Duration &dur) const
mgp::Duration operator-(const mgp::LocalDateTime &other) const

LocalDateTime

Temporal type representing a date and a local time.

Constructors

Creates a LocalDateTime object from the copy of the given mgp_local_date_time.

explicit LocalDateTime(mgp_local_date_time *ptr)
explicit LocalDateTime(const mgp_local_date_time *const_ptr)

Creates a LocalDateTime object from the given string representing a date in the ISO 8601 format (YYYY-MM-DDThh:mm:ss, YYYY-MM-DDThh:mm, YYYYMMDDThhmmss, YYYYMMDDThhmm, or YYYYMMDDThh).

explicit LocalDateTime(std::string_view string)

Creates a LocalDateTime object with the given year, month, day, hour, minute, second, millisecond, and microsecond properties.

LocalDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond)

Copy and move constructors:

LocalDateTime(const LocalDateTime &other)
LocalDateTime(LocalDateTime &&other) noexcept

Member functions

NameDescription
NowReturns the current LocalDateTime.
YearReturns the object’s year property.
MonthReturns the object’s month property.
DayReturns the object’s day property.
HourReturns the object’s hour property.
MinuteReturns the object’s minute property.
SecondReturns the object’s second property.
MillisecondReturns the object’s millisecond property.
MicrosecondReturns the object’s microsecond property.
TimestampReturns the object’s timestamp (microseconds since Unix epoch).
Now

Returns the current LocalDateTime.

static mgp::LocalDateTime Now()
Year

Returns the object’s year property.

int Year() const
Month

Returns the object’s month property.

int Month() const
Day

Returns the object’s day property.

int Day() const
Hour

Returns the object’s hour property.

int Hour() const
Minute

Returns the object’s minute property.

int Minute() const
Second

Returns the object’s second property.

int Second() const
Millisecond

Returns the object’s millisecond property.

int Millisecond() const
Microsecond

Returns the object’s microsecond property.

int Microsecond() const
Timestamp

Returns the date’s timestamp (microseconds since Unix epoch).

int64_t Timestamp() const

Operators

NameDescription
operator+
operator-
arithmetic operators
operator==
operator<
comparison operators
operator-
mgp::LocalDateTime operator-(const mgp::Duration &dur) const
mgp::Duration operator-(const mgp::LocalDateTime &other) const

Duration

Represents a period of time in Memgraph.

Constructors

Creates a Duration object from the copy of the given mgp_duration.

explicit Duration(mgp_duration *ptr)
explicit Duration(const mgp_duration *const_ptr)

Creates a Duration object from the given string in the following format: P[nD]T[nH][nM][nS], where (1) n stands for a number, (2) capital letters are used as a separator, (3) each field in [] is optional, and (4) only the last field may be a non-integer.

explicit Duration(std::string_view string)

Creates a Duration object from the given number of microseconds.

explicit Duration(int64_t microseconds) 

Creates a Duration object with the given day, hour, minute, second, millisecond, and microsecond properties.

Duration(double day, double hour, double minute, double second, double millisecond, double microsecond)

Copy and move constructors:

Duration(const Duration &other)
Duration(Duration &&other) noexcept

Member functions

NameDescription
MicrosecondsReturns the duration as microseconds.
Microseconds

Returns the duration as microseconds.

int64_t Microseconds() const

Operators

NameDescription
operator+
operator-
arithmetic operators
operator==
operator<
comparison operators
operator-
mgp::Duration operator-(const mgp::Duration &other) const
mgp::Duration operator-() const

Path

A path is a data structure consisting of alternating nodes and relationships, with the start and end points of a path necessarily being nodes.

Constructors

Creates a Path from the copy of the given mgp_path.

explicit Path(mgp_path *ptr)
explicit Path(const mgp_path *const_ptr)

Creates a Path starting with the given start_node.

explicit Path(const mgp::Node &start_node)

Copy and move constructors:

Path(const Path &other)
Path(Path &&other) noexcept

Member functions

NameDescription
LengthReturns the path length (number of relationships).
GetNodeAtReturns the node at the given index. The index must be less than or equal to length of the path.
GetRelationshipAtReturns the relationship at the given index. The index must be less than length of the path.
ExpandAdds a relationship continuing from the last node on the path.
Length

Returns the path length (number of relationships).

size_t Length() const
GetNodeAt

Returns the node at the given index. The index must be less than or equal to length of the path.

mgp::Node GetNodeAt(size_t index) const
GetRelationshipAt

Returns the relationship at the given index. The index must be less than the length of the path.

mgp::Relationship GetRelationshipAt(size_t index) const
Expand

Adds a relationship continuing from the last node on the path.

void Expand(const mgp::Relationship &relationship)

Operators

NameDescription
operator==
operator!=
comparison operators

List

A list containing any number of values of any supported type.

Constructors

Creates a List from the copy of the given mgp_list.

explicit List(mgp_list *ptr)
explicit List(const mgp_list *const_ptr)

Creates an empty List.

explicit List()

Creates a List with the given capacity.

explicit List(size_t capacity)

Creates a List from the given vector.

explicit List(const std::vector<Value> &values)
explicit List(std::vector<Value> &&values)

Creates a List from the given initializer_list.

explicit List(const std::initializer_list<Value> list)

Copy and move constructors:

List(const List &other)
List(List &&other) noexcept

Member variables

NameTypeDescription
Iteratormgp::List::IteratorConst forward iterator for List containers.

Member functions

NameDescription
SizeReturns the size of the list.
EmptyReturns whether the list is empty.
AppendAppends the given value to the list.
AppendExtendExtends the list and appends the given value to it.
begin
end
cbegin
cend
Returns the beginning/end of the List iterator.
Size

Returns the size of the list.

size_t Size() const
Empty

Returns whether the list is empty.

bool Empty() const
Append

Appends the given value to the list. The value is copied.

void Append(const mgp::Value &value)

Appends the given value to the list. Takes ownership of value by moving it. The behavior of accessing value after performing this operation is undefined.

void Append(mgp::Value &&value)
AppendExtend

Extends the list and appends the given value to it. The value is copied.

void AppendExtend(const mgp::Value &value)

Extends the list and appends the given value to it. Takes ownership of value by moving it. The behavior of accessing value after performing this operation is undefined.

void AppendExtend(mgp::Value &&value)

Operators

NameDescription
operator[]Returns the value at the given index.
operator==
operator!=
comparison operators
operator[]

Returns the value at the given index.

const mgp::Value operator[](size_t index) const

Map

A map of key-value pairs where keys are strings, and values can be of any supported type. The pairs are represented as MapItems.

Constructors

Creates a Map from the copy of the given mgp_map.

explicit Map(mgp_map *ptr)
explicit Map(const mgp_map *const_ptr)

Creates an empty Map.

explicit Map()

Creates a Map from the given STL map.

explicit Map(const std::map<std::string_view, Value> &items)
explicit Map(std::map<std::string_view, Value> &&items)

Creates a Map from the given initializer_list (map items correspond to initializer list pairs).

Map(const std::initializer_list<std::pair<std::string_view, Value>> items)

Copy and move constructors:

Map(const Map &other)
Map(Map &&other) noexcept

Member variables

NameTypeDescription
Iteratormgp::List::IteratorConst forward iterator for List containers.

Member functions

NameDescription
SizeReturns the size of the map.
EmptyReturns whether the map is empty.
AtReturns the value at the given key.
InsertInserts the given key-value pair into the map.
begin
end
cbegin
cend
Returns the beginning/end of the Map iterator.
Size

Returns the size of the map.

size_t Size() const
Empty

Returns whether the map is empty.

bool Empty() const
At

Returns the value at the given key.

mgp::Value const At(std::string_view key) const
Insert

Inserts the given key-value pair into the map. The value is copied.

void Insert(std::string_view key, const mgp::Value &value)

Inserts the given key-value pair into the map. Takes ownership of value by moving it. The behavior of accessing value after performing this operation is undefined.

void Insert(std::string_view key, mgp::Value &&value)

Operators

NameDescription
operator[]Returns the value at the given key.
operator==
operator!=
comparison operators
operator[]

Returns the value at the given key.

const mgp::Value operator[](std::string_view key) const

MapItem

Auxiliary data structure representing key-value pairs where keys are strings, and values can be of any supported type.

Member variables
NameTypeDescription
keystd::string_viewKey for accessing the value stored in a MapItem.
valuemgp::ValueThe stored value.
Operators
NameDescription
operator==
operator!=
operator<
comparison operators

Value

Represents a value of any type supported by Memgraph. The data types are described here.

Constructors

Creates a Value from the copy of the given mgp_value.

explicit Value(mgp_value *ptr)

Creates a null Value.

explicit Value()

Basic type constructors:

explicit Value(const bool value)
explicit Value(const int64_t value)
explicit Value(const double value)
explicit Value(const char *value)
explicit Value(const std::string_view value)

Container type constructors:

explicit Value(const mgp::List &value)
explicit Value(mgp::List &&value)
explicit Value(const mgp::Map &value)
explicit Value(mgp::Map &&value)

Graph element type constructors:

explicit Value(const mgp::Node &value)
explicit Value(mgp::Node &&value)
explicit Value(const mgp::Relationship &value)
explicit Value(mgp::Relationship &&value)
explicit Value(const mgp::Path &value)
explicit Value(mgp::Path &&value)

Temporal type constructors:

explicit Value(const mgp::Date &value)
explicit Value(mgp::Date &&value)
explicit Value(const mgp::LocalTime &value)
explicit Value(mgp::LocalTime &&value)
explicit Value(const mgp::LocalDateTime &value)
explicit Value(mgp::LocalDateTime &&value)
explicit Value(const mgp::Duration &value)
explicit Value(mgp::Duration &&value)

Copy and move constructors:

Value(const Value &other)
Value(Value &&other) noexcept

Member functions

NameDescription
TypeReturns the type of the value.
Value[TYPE]Returns a value of given type.
Is[TYPE]Returns whether the value is of given type.
Type

Returns the type of the value, i.e. the type stored in the Value object.

mgp::Type Type() const
Value[TYPE]

Depending on the exact function called, returns a typed value of the appropriate type. Throws an exception if the type stored in the Value object is not compatible with the function called.

bool ValueBool() const
int64_t ValueInt() const
double ValueDouble const
double ValueNumeric const
std::string_view ValueString() const
const mgp::List ValueList() const
const mgp::Map ValueMap() const
const mgp::Node ValueNode() const
const mgp::Relationship ValueRelationship() const
const mgp::Path ValuePath() const
const mgp::Date ValueDate() const
const mgp::LocalTime ValueLocalTime() const
const mgp::LocalDateTime ValueLocalDateTime() const
const mgp::Map ValueMap() const
Is[TYPE]

Returns whether the value stored in the Value object is of the type in the call.

bool IsNull() const
bool IsBool() const
bool IsInt() const
bool IsDouble() const
bool IsNumeric() const
bool IsString() const
bool IsList() const
bool IsMap() const
bool IsNode() const
bool IsRelationship() const
bool IsPath() const
bool IsDate() const
bool IsLocalTime() const
bool IsLocalDateTime() const
bool IsDuration() const

Operators

NameDescription
operator==
operator!=
comparison operators

Type

Enumerates the data types supported by Memgraph and its C++ API. The types are listed and described on this page.

  • Type::Null
  • Type::Bool
  • Type::Int
  • Type::Double
  • Type::String
  • Type::List
  • Type::Map
  • Type::Node
  • Type::Relationship
  • Type::Path
  • Type::Date
  • Type::LocalTime
  • Type::LocalDateTime
  • Type::Duration

Exceptions

During operation, the following exceptions may be thrown.

ExceptionMessage
ValueExceptionvarious (handles unknown/unexpected types)
NotFoundExceptionNode with ID [ID] not found!
NotEnoughMemoryExceptionNot enough memory!
UnknownExceptionUnknown exception!
AllocationExceptionCould not allocate memory!
InsufficientBufferExceptionBuffer is not sufficient to process procedure!
IndexExceptionIndex value out of bounds!
OutOfRangeExceptionIndex out of range!
LogicExceptionLogic exception, check the procedure signature!
DeletedObjectExceptionObject is deleted!
InvalidArgumentExceptionInvalid argument!
InvalidIDExceptionInvalid ID!
KeyAlreadyExistsExceptionKey you are trying to set already exists!
ImmutableObjectExceptionObject you are trying to change is immutable!
ValueConversionExceptionError in value conversion!
SerializationExceptionError in serialization!