diff --git a/pages/advanced-algorithms/available-algorithms/refactor.mdx b/pages/advanced-algorithms/available-algorithms/refactor.mdx
index 20f970fc6..7afd107a8 100644
--- a/pages/advanced-algorithms/available-algorithms/refactor.mdx
+++ b/pages/advanced-algorithms/available-algorithms/refactor.mdx
@@ -35,6 +35,115 @@ The `refactor` module provides utilities for changing nodes and relationships.
If you want to execute this algorithm on graph projections, subgraphs or portions of the graph, be sure to check out [how to run a MAGE module on subgraphs](/advanced-algorithms/run-algorithms#run-procedures-on-subgraph).
+### `from(relationship, new_from)`
+
+Redirect the relationship to use a new start (from) node.
+
+#### Input:
+
+- `relationship: Relationship` ➡ the relationship to be modified.
+- `new_from: Node` ➡ new start (from) node.
+
+#### Output:
+
+- `relationship` - the modified relationship.
+
+#### Usage:
+
+```cypher
+MERGE (ivan:Person {name: "Ivan"}) MERGE (matija:Person {name: "Matija"}) MERGE (diora:Person {name:"Idora"}) CREATE (ivan)-[:Friends]->(matija);
+```
+
+The following query changes the the relationship `Ivan ➡ Matija` to `Idora ➡ Matija`.
+```cypher
+MATCH (:Person {name: "Ivan"})-[rel:Friends]->(:Person {name: "Matija"}) MATCH (idora: Person {name:"Idora"}) CALL refactor.from(rel, idora) YIELD relationship RETURN relationship;
+```
+
+### `to(relationship, new_to)`
+
+Redirect the relationship to use a new end (to) node.
+
+#### Input:
+
+- `relationship: Relationship` ➡ the relationship to be modified.
+- `new_to: Node` ➡ new end (to) node.
+
+#### Output:
+
+- `relationship` - the modified relationship.
+
+#### Usage:
+
+```cypher
+MERGE (ivan:Person {name: "Ivan"}) MERGE (matija:Person {name: "Matija"}) MERGE (diora:Person {name:"Idora"}) CREATE (ivan)-[:Friends]->(matija);
+```
+The following query changes the the relationship `Ivan ➡ Matija` to `Ivan ➡ Idora`.
+```cypher
+MATCH (:Person {name: "Ivan"})-[rel:Friends]->(:Person {name: "Matija"}) MATCH (idora: Person {name:"Idora"}) CALL refactor.to(rel, idora) YIELD relationship RETURN relationship;
+```
+
+### `rename_label(old_label, new_label, nodes)`
+
+Rename a label from `old_label` to `new_label` for all nodes. If `nodes` is provided renaming is applied only to the given nodes. If a node doesn't contain the `old_label` the procedure doesn't modify it.
+
+#### Input:
+
+- `old_label: str` ➡ old label name.
+- `new_label: str` ➡ new label name.
+- `nodes: List[Node]` ➡ list of nodes to be modified.
+
+### Output:
+
+- `nodes_changed: int` ➡ number of modified nodes.
+
+#### Usage:
+
+```cypher
+CREATE (:Node1 {title: "Node1"}) CREATE (:Node2 {title: "Node2"}) CREATE (:Node1);
+```
+The following query changes the label of the first node to `Node`
+```cypher
+MATCH(n) WITH collect(n) AS nodes CALL refactor.rename_label("Node1", "Node3", nodes) YIELD nodes_changed RETURN nodes_changed;
+```
+```plaintext
++----------------------------+
+| nodes_changed |
++----------------------------+
+| 2 |
++----------------------------+
+```
+
+### `rename_node_property(old_property, new_property, nodes)`
+
+Rename a property from `old_property` to `new_property` for all nodes. If `nodes` is provided renaming is applied only to the given nodes. If a node doesn't contain the `old_property` the procedure doesn't modify it.
+
+#### Input:
+
+- `old_property: str` ➡ old property name.
+- `new_label: str` ➡ new property name.
+- `nodes: List[Node]` ➡ list of nodes to be modified.
+
+### Output:
+
+- `nodes_changed: int` ➡ number of modified nodes.
+
+#### Usage:
+
+```cypher
+CREATE (:Node1 {title: "Node1"}) CREATE (:Node2 {description: "Node2"}) CREATE (:Node3) CREATE (:Node4 {title: "title", description: "description"});
+```
+The following query will modify `Node1` and `Node4`.
+```cypher
+MATCH(n) WITH collect(n) AS nodes CALL refactor.rename_node_property("title", "description", nodes) YIELD nodes_changed RETURN nodes_changed;
+```
+```plaintext
++----------------------------+
+| nodes_changed |
++----------------------------+
+| 2 |
++----------------------------+
+```
+
### `categorize(original_prop_key, rel_type, is_outgoing, new_label, new_prop_name_key, copy_props_list)`
Generates a new category of nodes based on a specific property key from the existing nodes in the graph. Then, it creates relationships between the original and new category nodes to organize a graph based on these categories.
diff --git a/pages/configuration/configuration-settings.mdx b/pages/configuration/configuration-settings.mdx
index fa4b211cc..caad21df6 100644
--- a/pages/configuration/configuration-settings.mdx
+++ b/pages/configuration/configuration-settings.mdx
@@ -38,15 +38,15 @@ per-database configuration.
## Bolt
-| Flag | Description | Type |
-| -------------- | -------------- | -------------- |
-| --bolt-address=0.0.0.0 | IP address on which the Bolt server should listen. | `[string]` |
-| --bolt-cert-file= | Certificate file which should be used for the Bolt server. | `[string]` |
-| --bolt-key-file= | Key file which should be used for the Bolt server. | `[string]` |
-| --bolt-num-workers= | Number of workers used by the Bolt server. By default, this will be the number of processing units available on the machine. | `[int32]` |
-| --bolt-port=7687 | Port on which the Bolt server should listen. | `[int32]` |
-| --bolt-server-name-for-init=Neo4j/v5.11.0 compatible graph database server - Memgraph | Server name which the database should send to the client in the Bolt INIT message. | `[string]` |
-| --bolt-session-inactivity-timeout=1800 | Time in seconds after which inactive Bolt sessions will be closed. | `[int32]` |
+| Flag | Description | Type |
+|---------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|------------|
+| --bolt-address=0.0.0.0 | IP address on which the Bolt server should listen. | `[string]` |
+| --bolt-cert-file= | Certificate file which should be used for the Bolt server. | `[string]` |
+| --bolt-key-file= | Key file which should be used for the Bolt server. | `[string]` |
+| --bolt-num-workers= | Number of workers used by the Bolt server. By default, this will be the number of processing units available on the machine. | `[int32]` |
+| --bolt-port=7687 | Port on which the Bolt server should listen. | `[int32]` |
+| --bolt-server-name-for-init=Neo4j/v5.11.0 compatible graph database server - Memgraph | Server name which the database should send to the client in the Bolt INIT message. | `[string]` |
+| --bolt-session-inactivity-timeout=1800 | Time in seconds after which inactive Bolt sessions will be closed. | `[int32]` |
@@ -59,72 +59,72 @@ workers simultaneously.
## Query
-| Flag | Description | Type |
-| -------------- | -------------- | -------------- |
-| --query-callable-mappings-path | Path to the JSON file that contains possible alias mappings for query procedures in the form of key-value pairs. | `[string]` |
-| --query-cost-planner=true | Use the cost-estimating query planner. | `[bool]` |
-| --query-execution-timeout-sec=180 | Maximum allowed query execution time. Queries exceeding this limit will be aborted. Value of 0 means no limit. | `[uint64]` |
-| --query-max-plans=1000 | Maximum number of generated plans for a query. | `[uint64]` |
-| --query-modules-directory=/usr/lib/memgraph/query_modules | Directory where modules with custom query procedures are stored. NOTE: Multiple comma-separated directories can be defined. | `[string]` |
-| --query-plan-cache-ttl=60 | Time to live for cached query plans, in seconds. | `[int32]` |
-| --query-vertex-count-to-expand-existing=10 | Maximum count of indexed vertices which provoke indexed lookup and then expand to existing, instead of a regular expand. Default is 10, to turn off use -1. | `[int64]` |
+| Flag | Description | Type |
+|-----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
+| --query-callable-mappings-path | Path to the JSON file that contains possible alias mappings for query procedures in the form of key-value pairs. | `[string]` |
+| --query-cost-planner=true | Use the cost-estimating query planner. | `[bool]` |
+| --query-execution-timeout-sec=180 | Maximum allowed query execution time. Queries exceeding this limit will be aborted. Value of 0 means no limit. | `[uint64]` |
+| --query-max-plans=1000 | Maximum number of generated plans for a query. | `[uint64]` |
+| --query-modules-directory=/usr/lib/memgraph/query_modules | Directory where modules with custom query procedures are stored. NOTE: Multiple comma-separated directories can be defined. | `[string]` |
+| --query-plan-cache-ttl=60 | Time to live for cached query plans, in seconds. | `[int32]` |
+| --query-vertex-count-to-expand-existing=10 | Maximum count of indexed vertices which provoke indexed lookup and then expand to existing, instead of a regular expand. Default is 10, to turn off use -1. | `[int64]` |
## Storage
-| Flag | Description | Type |
-| -------------- | -------------- | -------------- |
-| --storage-gc-cycle-sec=30 | Storage garbage collector interval (in seconds). | `[uint64]` |
-| --storage-properties-on-edges=true | Controls whether edges have properties. | `[bool]` |
-| --storage-recover-on-startup=true | Deprecated and replaced with the `data_recovery_on_startup` flag. Controls whether the storage recovers persisted data on startup. | `[bool]` |
-| --storage-snapshot-interval-sec=300 | Storage snapshot creation interval (in seconds). Set to 0 to disable periodic snapshot creation. | `[uint64]` |
-| --storage-snapshot-on-exit=true | Controls whether the storage creates another snapshot on exit. | `[bool]` |
-| --storage-snapshot-retention-count=3 | The number of snapshots that should always be kept. | `[uint64]` |
-| --storage-wal-enabled=true | Controls whether the storage uses write-ahead-logging. To enable WAL periodic snapshots must be enabled. | `[bool]` |
-| --storage-wal-file-flush-every-n-tx=100000 | Issue a 'fsync' call after this amount of transactions are written to the WAL file. Set to 1 for fully synchronous operation. | `[uint64]` |
-| --storage-wal-file-size-kib=20480 | Minimum file size of each WAL file. | `[uint64]` |
-| --storage-items-per-batch=1000000 | The number of edges and vertices stored in a batch in a snapshot file. | `[uint64]` |
-| --storage-recovery-thread-count= | The number of threads used to recover persisted data from disk. | `[uint64]` |
-| --storage-parallel-index-recovery=false | Controls whether the index creation can be done in a multithreaded fashion during recovery. | `[bool]` |
+| Flag | Description | Type |
+|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|------------|
+| --storage-gc-cycle-sec=30 | Storage garbage collector interval (in seconds). | `[uint64]` |
+| --storage-properties-on-edges=true | Controls whether edges have properties. | `[bool]` |
+| --storage-recover-on-startup=true | Deprecated and replaced with the `data_recovery_on_startup` flag. Controls whether the storage recovers persisted data on startup. | `[bool]` |
+| --storage-snapshot-interval-sec=300 | Storage snapshot creation interval (in seconds). Set to 0 to disable periodic snapshot creation. | `[uint64]` |
+| --storage-snapshot-on-exit=true | Controls whether the storage creates another snapshot on exit. | `[bool]` |
+| --storage-snapshot-retention-count=3 | The number of snapshots that should always be kept. | `[uint64]` |
+| --storage-wal-enabled=true | Controls whether the storage uses write-ahead-logging. To enable WAL periodic snapshots must be enabled. | `[bool]` |
+| --storage-wal-file-flush-every-n-tx=100000 | Issue a 'fsync' call after this amount of transactions are written to the WAL file. Set to 1 for fully synchronous operation. | `[uint64]` |
+| --storage-wal-file-size-kib=20480 | Minimum file size of each WAL file. | `[uint64]` |
+| --storage-items-per-batch=1000000 | The number of edges and vertices stored in a batch in a snapshot file. | `[uint64]` |
+| --storage-recovery-thread-count= | The number of threads used to recover persisted data from disk. | `[uint64]` |
+| --storage-parallel-index-recovery=false | Controls whether the index creation can be done in a multithreaded fashion during recovery. | `[bool]` |
## Streams
-| Flag | Description | Type |
-| -------------- | -------------- | -------------- |
-| --kafka-bootstrap-servers | List of Kafka brokers as a comma separated list of broker `host` or `host:port`. | `[string]` |
-| --pulsar-service-url | The service URL that will allow Memgraph to locate the Pulsar cluster. | `[string]` |
-| --stream-transaction-conflict-retries=30 | Number of times to retry a conflicting transaction of a stream. | `[uint32]` |
-| --stream-transaction-retry-interval=500 | The interval to wait (measured in milliseconds) before retrying to execute again a conflicting transaction. | `[uint32]` |
+| Flag | Description | Type |
+|------------------------------------------|-------------------------------------------------------------------------------------------------------------|------------|
+| --kafka-bootstrap-servers | List of Kafka brokers as a comma separated list of broker `host` or `host:port`. | `[string]` |
+| --pulsar-service-url | The service URL that will allow Memgraph to locate the Pulsar cluster. | `[string]` |
+| --stream-transaction-conflict-retries=30 | Number of times to retry a conflicting transaction of a stream. | `[uint32]` |
+| --stream-transaction-retry-interval=500 | The interval to wait (measured in milliseconds) before retrying to execute again a conflicting transaction. | `[uint32]` |
## Other
-| Flag | Description | Type |
-| -------------- | -------------- | -------------- |
-| --allow-load-csv=true | Controls whether LOAD CSV clause is allowed in queries. | `[bool]` |
-| --also-log-to-stderr=false | Log messages go to stderr in addition to logfiles. | `[bool]` |
-| --data-directory=/var/lib/memgraph | Path to directory in which to save all permanent data. | `[string]` |
-| --data_recovery_on_startup=true | Facilitates recovery of one or more individual databases and their contents during startup. Replaces `--storage-recover-on-startup` | `[bool]` |
-| --delta-chain-cache-threshold=128 | The minimum number of deltas worth caching when rebuilding a certain object's state. Useful when executing parallel transactions dependant on changes of a frequently changed graph object, to lower CPU usage. Must be a positive non-zero integer. | `[uint64]` |
-| --init-file | Path to the CYPHERL file which contains queries that need to be executed before the Bolt server starts, such as creating users. | `[string]` |
-| --init-data-file | Path to the CYPHERL file, which contains queries that need to be executed after the Bolt server starts. | `[string]` |
-| --isolation-level=SNAPSHOT_ISOLATION | Isolation level used for the transactions. Allowed values: SNAPSHOT_ISOLATION, READ_COMMITTED, READ_UNCOMMITTED. | `[string]` |
-| --log-file=/var/log/memgraph/memgraph.log | Path to where the log should be stored. | `[string]` |
-| --log-level=WARNING | Minimum log level. Allowed values: TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL. | `[string]` |
-| --memory-limit=0 | Total memory limit in MiB. Set to 0 to use the default values which are 100% of the physical memory if the swap is enabled and 90% of the physical memory otherwise. | `[uint64]` |
-| --metrics-address | Host for HTTP server for exposing metrics. | `[string]` |
-| --metrics-port | Port for HTTP server for exposing metrics. | `[uint64]` |
-| --memory-warning-threshold=1024 | Memory warning threshold, in MB. If Memgraph detects there is less available RAM it will log a warning. Set to 0 to disable. | `[uint64]` |
-| --password-encryption-algorithm=bcrypt | Algorithm used for password encryption. Defaults to BCrypt. Allowed values: `bcrypt`, `sha256`, `sha256-multiple` (SHA256 with multiple iterations) | `[string]` |
-| --replication-replica-check-delay-sec | The time duration in seconds between two replica checks/pings. If < 1, replicas will not be checked at all. The MAIN instance allocates a new thread for each REPLICA. | `[uint64]` |
-| --replication-restore-state-on-startup | Set to `true` when initializing an instance to restore the replication role and configuration upon restart. | `[bool]` |
-| --telemetry-enabled=true | Set to true to enable telemetry. We collect information about the running system (CPU and memory information), information about the database runtime (vertex and edge counts and resource usage), and aggregated statistics about some features of the database (e.g. how many times a feature is used) to allow for an easier improvement of the product. | `[bool]` |
+| Flag | Description | Type |
+| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
+| --allow-load-csv=true | Controls whether LOAD CSV clause is allowed in queries. | `[bool]` |
+| --also-log-to-stderr=false | Log messages go to stderr in addition to logfiles. | `[bool]` |
+| --data-directory=/var/lib/memgraph | Path to directory in which to save all permanent data. | `[string]` |
+| --data_recovery_on_startup=true | Facilitates recovery of one or more individual databases and their contents during startup. Replaces `--storage-recover-on-startup` | `[bool]` |
+| --delta-chain-cache-threshold=128 | The minimum number of deltas worth caching when rebuilding a certain object's state. Useful when executing parallel transactions dependant on changes of a frequently changed graph object, to lower CPU usage. Must be a positive non-zero integer. | `[uint64]` |
+| --init-file | Path to the CYPHERL file which contains queries that need to be executed before the Bolt server starts, such as creating users. | `[string]` |
+| --init-data-file | Path to the CYPHERL file, which contains queries that need to be executed after the Bolt server starts. | `[string]` |
+| --isolation-level=SNAPSHOT_ISOLATION | Isolation level used for the transactions. Allowed values: SNAPSHOT_ISOLATION, READ_COMMITTED, READ_UNCOMMITTED. | `[string]` |
+| --log-file=/var/log/memgraph/memgraph.log | Path to where the log should be stored. | `[string]` |
+| --log-level=WARNING | Minimum log level. Allowed values: TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL. | `[string]` |
+| --memory-limit=0 | Total memory limit in MiB. Set to 0 to use the default values which are 100% of the physical memory if the swap is enabled and 90% of the physical memory otherwise. | `[uint64]` |
+| --metrics-address | Host for HTTP server for exposing metrics. | `[string]` |
+| --metrics-port | Port for HTTP server for exposing metrics. | `[uint64]` |
+| --memory-warning-threshold=1024 | Memory warning threshold, in MB. If Memgraph detects there is less available RAM it will log a warning. Set to 0 to disable. | `[uint64]` |
+| --password-encryption-algorithm=bcrypt | Algorithm used for password encryption. Defaults to BCrypt. Allowed values: `bcrypt`, `sha256`, `sha256-multiple` (SHA256 with multiple iterations) | `[string]` |
+| --replication-replica-check-delay-sec | The time duration in seconds between two replica checks/pings. If < 1, replicas will not be checked at all. The MAIN instance allocates a new thread for each REPLICA. | `[uint64]` |
+| --replication-restore-state-on-startup | Set to `true` when initializing an instance to restore the replication role and configuration upon restart. | `[bool]` |
+| --telemetry-enabled=true | Set to true to enable telemetry. We collect information about the running system (CPU and memory information), information about the database runtime (vertex and edge counts and resource usage), and aggregated statistics about some features of the database (e.g. how many times a feature is used) to allow for an easier improvement of the product. | `[bool]` |
## Environment variables
-| Variable | Description | Type |
-| -------------- | -------------- | -------------- |
-| MEMGRAPH_USER | Username | `[string]` |
-| MEMGRAPH_PASSWORD | User password | `[string]` |
-| MEMGRAPH_PASSFILE | Path to file that contains username and password for creating user. Data in file should be in format `username:password` if your username or password contains `:` just add `\` before for example `us\:ername:password` | `[string]` |
+| Variable | Description | Type |
+|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
+| MEMGRAPH_USER | Username | `[string]` |
+| MEMGRAPH_PASSWORD | User password | `[string]` |
+| MEMGRAPH_PASSFILE | Path to file that contains username and password for creating user. Data in file should be in format `username:password` if your username or password contains `:` just add `\` before for example `us\:ername:password` | `[string]` |
## Additional configuration inclusion
@@ -137,6 +137,10 @@ Example:
`--flag-file=another.conf`
+## Check configuration
+
+Check the current configuration by running the `SHOW CONFIG;` query.
+
## Change the configuration
Some configuration settings can be changed during runtime, while others need to
@@ -148,14 +152,14 @@ Memgraph contains settings that can be modified during runtime using a query.
Some runtime settings are persisted between multiple runs, while others will
fallback to the value of the command-line argument.
-| Setting name | Description | Persistent between runs |
-| -------------- | -------------- | ----------------------- |
-| organization.name | Name of the organization using the instance of Memgraph (used for verifying the license key). | yes |
-| enterprise.license | License key for Memgraph Enterprise. | yes |
-| server.name | Bolt server name. | yes |
-| query.timeout | Maximum allowed query execution time. Value of 0 means no limit. | yes |
-| log.level | Minimum log level. Allowed values: TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL. | no |
-| log.to_stderr | Log messages go to `stderr` in addition to `logfiles`. | no |
+| Setting name | Description | Persistent between runs |
+|--------------------|-----------------------------------------------------------------------------------------------|-------------------------|
+| organization.name | Name of the organization using the instance of Memgraph (used for verifying the license key). | yes |
+| enterprise.license | License key for Memgraph Enterprise. | yes |
+| server.name | Bolt server name. | yes |
+| query.timeout | Maximum allowed query execution time. Value of 0 means no limit. | yes |
+| log.level | Minimum log level. Allowed values: TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL. | no |
+| log.to_stderr | Log messages go to `stderr` in addition to `logfiles`. | no |
All settings can be fetched by calling the following query:
@@ -267,6 +271,232 @@ Debian, RPM package, or WSL.
-### Check configuration
+## Use `init` flags with Docker
+
+With `init-file` and `init-data-file` configuration
+flags, you can execute queries from a
+CYPHERL file that need to be executed before or immediately after the Bolt
+server starts. The CYPHERL file the `init-file` flag points to is usually used
+to create users and set their passwords allowing only authorized users to access
+the data in the first run. The CYPHERL file the `init-data-file` points to is
+usually used to populate the database.
+
+If you will run Memgraph with Docker, make sure that the `init-file` and
+`init-data-file` configuration flags are referring to the files inside the
+container before Memgraph starts. Files can't be directly copied into a
+container before it's started because the filesystem of the container doesn't
+exist until it's actually running. However, you can tackle this by using a
+Dockerfile.
+
+In this guide you will learn how to:
+- [**Use the `init-file` flag with Docker**](#use-the-init-file-flag-with-docker)
+- [**Use the `init-data-file` flag with Docker**](#use-the-init-data-file-flag-with-docker)
+
+### Use the `init-file` flag with Docker
+
+
+
+{
Create all necessary files
}
+
+First, create a local directory called `my_init_test` with `auth.cypherl` and
+Dockerfile inside it.
+
+Below is the content of the `auth.cypherl` file:
+
+```
+CREATE USER memgraph1 IDENTIFIED BY '1234';
+```
+
+The Dockerfile should be defined like this:
+
+```bash
+FROM memgraph/memgraph:latest
+
+USER root
+
+COPY auth.cypherl /usr/lib/memgraph/auth.cypherl
+
+USER memgraph
+```
+
+The above Dockerfile builds an image based on `memgraph/memgraph:latest` image.
+For other images, [check Memgraph's Docker
+Hub](https://hub.docker.com/u/memgraph). Then, it switches to the user `root` to
+be able to copy the local file to the container where Memgraph will be run. Due
+to the permissions set, it is recommended to copy it to `/usr/lib/memgraph/` or
+any subfolder within that folder. In the end, the user is switched back to
+`memgraph`.
+
+{
Build the Docker image
}
+
+Open the terminal, place yourself in the `my_init_test` directory and build the
+image called `my_image` with the following command:
+
+```
+docker build -t my_image .
+```
+
+{
Run the Docker image
}
+
+Once you've built the Docker image, you can run it with the `init-file` flag set
+to the appropriate value:
+
+```
+docker run -it -p 7687:7687 -p 7444:7444 my_image --init-file=/usr/lib/memgraph/auth.cypherl
+```
+
+To check all available flags in Memgraph, refer to [the configuration reference
+guide](/docs/reference-guide/configuration.md).
+
+{
4. Connect to Memgraph
}
+
+To verify that everything is set up correctly, [run Memgraph
+Lab](/data-visualization) and connect to
+Memgraph. You'll notice that you have
+to connect manually and input the correct username and password. This happened
+because `auth.cypherl` file was run before the Bolt server started. You can also
+run the `SHOW CONFIG` query:
+
+
+
+Notice how the current value of `init_file` is updated with the path to the
+CYPHERL file inside the container.
+
+
+
+### Use the `init-data-file` flag with Docker
+
+
+
+{
1. Create all necessary files
}
+
+First, create a local directory called `my_init_test` with `data.cypherl` and
+Dockerfile inside it.
+
+Below is the content of the `data.cypherl` file:
+
+```
+CREATE INDEX ON :__mg_vertex__(__mg_id__);
+CREATE (:__mg_vertex__:`Person` {__mg_id__: 0, `name`: "Peter"});
+CREATE (:__mg_vertex__:`Team` {__mg_id__: 1, `name`: "Engineering"});
+CREATE (:__mg_vertex__:`Repository` {__mg_id__: 2, `name`: "Memgraph"});
+CREATE (:__mg_vertex__:`Repository` {__mg_id__: 3, `name`: "MAGE"});
+CREATE (:__mg_vertex__:`Repository` {__mg_id__: 4, `name`: "GQLAlchemy"});
+CREATE (:__mg_vertex__:`Company` {__mg_id__: 5, `name`: "Memgraph"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 6, `name`: "welcome_to_engineering.txt"});
+CREATE (:__mg_vertex__:`Storage` {__mg_id__: 7, `name`: "Google Drive"});
+CREATE (:__mg_vertex__:`Storage` {__mg_id__: 8, `name`: "Notion"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 9, `name`: "welcome_to_memgraph.txt"});
+CREATE (:__mg_vertex__:`Person` {__mg_id__: 10, `name`: "Carl"});
+CREATE (:__mg_vertex__:`Folder` {__mg_id__: 11, `name`: "engineering_folder"});
+CREATE (:__mg_vertex__:`Person` {__mg_id__: 12, `name`: "Anna"});
+CREATE (:__mg_vertex__:`Folder` {__mg_id__: 13, `name`: "operations_folder"});
+CREATE (:__mg_vertex__:`Team` {__mg_id__: 14, `name`: "Operations"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 15, `name`: "operations101.txt"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 16, `name`: "expenses2022.csv"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 17, `name`: "salaries2022.csv"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 18, `name`: "engineering101.txt"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 19, `name`: "working_with_github.txt"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 20, `name`: "working_with_notion.txt"});
+CREATE (:__mg_vertex__:`Team` {__mg_id__: 21, `name`: "Marketing"});
+CREATE (:__mg_vertex__:`Person` {__mg_id__: 22, `name`: "Julie"});
+CREATE (:__mg_vertex__:`Account` {__mg_id__: 23, `name`: "Facebook"});
+CREATE (:__mg_vertex__:`Account` {__mg_id__: 24, `name`: "LinkedIn"});
+CREATE (:__mg_vertex__:`Account` {__mg_id__: 25, `name`: "HackerNews"});
+CREATE (:__mg_vertex__:`File` {__mg_id__: 26, `name`: "welcome_to_marketing.txt"});
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 0 AND v.__mg_id__ = 1 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 0 AND v.__mg_id__ = 5 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 0 AND v.__mg_id__ = 9 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 0 AND v.__mg_id__ = 14 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 1 AND v.__mg_id__ = 2 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 1 AND v.__mg_id__ = 3 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 1 AND v.__mg_id__ = 4 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 1 AND v.__mg_id__ = 6 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 1 AND v.__mg_id__ = 11 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 5 AND v.__mg_id__ = 1 CREATE (u)-[:`HAS_TEAM`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 5 AND v.__mg_id__ = 21 CREATE (u)-[:`HAS_TEAM`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 5 AND v.__mg_id__ = 14 CREATE (u)-[:`HAS_TEAM`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 6 AND v.__mg_id__ = 7 CREATE (u)-[:`IS_STORED_IN`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 6 AND v.__mg_id__ = 8 CREATE (u)-[:`IS_STORED_IN`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 9 AND v.__mg_id__ = 12 CREATE (u)-[:`CREATED_BY`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 10 AND v.__mg_id__ = 1 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 10 AND v.__mg_id__ = 5 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 10 AND v.__mg_id__ = 9 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 11 AND v.__mg_id__ = 7 CREATE (u)-[:`IS_STORED_IN`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 11 AND v.__mg_id__ = 18 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 11 AND v.__mg_id__ = 19 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 11 AND v.__mg_id__ = 20 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 12 AND v.__mg_id__ = 14 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 13 AND v.__mg_id__ = 15 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 13 AND v.__mg_id__ = 16 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 13 AND v.__mg_id__ = 17 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 13 AND v.__mg_id__ = 7 CREATE (u)-[:`IS_STORED_IN`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 14 AND v.__mg_id__ = 13 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 21 AND v.__mg_id__ = 23 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 21 AND v.__mg_id__ = 24 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 21 AND v.__mg_id__ = 25 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 21 AND v.__mg_id__ = 26 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 22 AND v.__mg_id__ = 21 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 22 AND v.__mg_id__ = 5 CREATE (u)-[:`IS_PART_OF`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 22 AND v.__mg_id__ = 9 CREATE (u)-[:`HAS_ACCESS_TO`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 26 AND v.__mg_id__ = 7 CREATE (u)-[:`IS_STORED_IN`]->(v);
+MATCH (u:__mg_vertex__), (v:__mg_vertex__) WHERE u.__mg_id__ = 26 AND v.__mg_id__ = 8 CREATE (u)-[:`IS_STORED_IN`]->(v);
+DROP INDEX ON :__mg_vertex__(__mg_id__);
+MATCH (u) REMOVE u:__mg_vertex__, u.__mg_id__;
+```
+
+These Cypher queries will create the *Identity and access management* dataset
+available in Memgraph Lab. You can get this CYPHERL file by exporting the
+dataset from the Memgraph Lab.
+
+The Dockerfile should be defined like this:
+
+```bash
+FROM memgraph/memgraph:latest
+
+USER root
+
+COPY data.cypherl /usr/lib/memgraph/data.cypherl
+
+USER memgraph
+```
+
+The above Dockerfile builds an image based on `memgraph/memgraph:latest` image.
+For other images, [check Memgraph's Docker
+Hub](https://hub.docker.com/u/memgraph). Then, it switches to the user `root` to
+be able to copy the local file to the container where Memgraph will be run. Due
+to the permissions set, it is recommended to copy it to `/usr/lib/memgraph/` or
+any subfolder within that folder. In the end, the user is switched back to
+`memgraph`.
+
+
+{
Build the Docker image
}
+
+Open the terminal, place yourself in the `my_init_test` directory and build the
+image called `my_image` with the following command:
+
+```
+docker build -t my_image .
+```
+
+{
3. Run the Docker image
}
+
+Once you've built the Docker image, you can run it with the `init-data-file`
+flag set to the appropriate value:
+
+```
+docker run -it -p 7687:7687 -p 7444:7444 my_image --init-data-file=/usr/lib/memgraph/data.cypherl
+```
+
+{
Connect to Memgraph
}
+
+To verify that everything is set up correctly, [run Memgraph
+Lab](/data-visualization), connect to Memgraph, and run the `SHOW CONFIG` query:
+
+
+
+Notice how the database is already populated and the current value of
+`init_data_file` is updated with the path to the CYPHERL file inside the
+container.
-Check the current configuration by running the `SHOW CONFIG;` query.
\ No newline at end of file
+
\ No newline at end of file
diff --git a/pages/data-migration.mdx b/pages/data-migration.mdx
index befbb2822..992b63c31 100644
--- a/pages/data-migration.mdx
+++ b/pages/data-migration.mdx
@@ -4,6 +4,7 @@ description: Master the process of data migration with Memgraph. In-depth docume
---
import { Callout } from 'nextra/components'
+import { Card, Cards } from 'nextra/components'
# Data migration
@@ -87,4 +88,22 @@ into Memgraph using [GQLAlchemy](https://memgraph.github.io/gqlalchemy/how-to-gu
## NetworkX, PyG or DGL graph
If you are a Python user you can import NetworkX, PyG or DGL graph into Memgraph
-using [GQLAlchemy](https://memgraph.github.io/gqlalchemy/how-to-guides/translators/import-python-graphs/).
\ No newline at end of file
+using [GQLAlchemy](https://memgraph.github.io/gqlalchemy/how-to-guides/translators/import-python-graphs/).
+
+## Memgraph's office hours
+
+Schedule a 30 min session with one of our engineers to discuss how Memgraph fits
+with your architecture. Our engineers are highly experienced in helping
+companies of all sizes to integrate and get the most out of Memgraph in their
+projects. Talk to us about data modeling, optimizing queries, defining
+infrastructure requirements or migrating from your existing graph database. No
+nonsense or sales pitch, just tech.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/data-migration/migrate-from-neo4j.mdx b/pages/data-migration/migrate-from-neo4j.mdx
index 08e4632a0..dca3e95e6 100644
--- a/pages/data-migration/migrate-from-neo4j.mdx
+++ b/pages/data-migration/migrate-from-neo4j.mdx
@@ -3,6 +3,8 @@ title: Migrate from Neo4j to Memgraph
description: Switch from Neo4j to Memgraph smoothly. Detailed documentation to guide the migration process for a seamless transition to Memgraph.
---
+import { Card, Cards } from 'nextra/components'
+
# Migrate from Neo4j to Memgraph
Memgraph is a native in-memory graph database specialized for real-time
@@ -512,3 +514,21 @@ open-source repository MAGE to solve graph analytics problems, create awesome
customized visual displays of your nodes and relationships with [Graph Style
Script](/data-visualization/graph-style-script) and above all - enjoy your new
graph database!
+
+## Memgraph's office hours
+
+Schedule a 30 min session with one of our engineers to discuss how Memgraph fits
+with your architecture. Our engineers are highly experienced in helping
+companies of all sizes to integrate and get the most out of Memgraph in their
+projects. Talk to us about data modeling, optimizing queries, defining
+infrastructure requirements or migrating from your existing graph database. No
+nonsense or sales pitch, just tech.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/getting-started.mdx b/pages/getting-started.mdx
index 69ecdb85b..287733f97 100644
--- a/pages/getting-started.mdx
+++ b/pages/getting-started.mdx
@@ -195,4 +195,22 @@ data using Memgraph Lab.
/>
-
\ No newline at end of file
+
+
+## Memgraph's office hours
+
+Schedule a 30 min session with one of our engineers to discuss how Memgraph fits
+with your architecture. Our engineers are highly experienced in helping
+companies of all sizes to integrate and get the most out of Memgraph in their
+projects. Talk to us about data modeling, optimizing queries, defining
+infrastructure requirements or migrating from your existing graph database. No
+nonsense or sales pitch, just tech.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/help-center/errors/overview.mdx b/pages/help-center/errors.mdx
similarity index 100%
rename from pages/help-center/errors/overview.mdx
rename to pages/help-center/errors.mdx
diff --git a/pages/help-center/errors/_meta.json b/pages/help-center/errors/_meta.json
index 2a20ff341..21d414fa8 100644
--- a/pages/help-center/errors/_meta.json
+++ b/pages/help-center/errors/_meta.json
@@ -3,7 +3,6 @@
"durability": "Durability",
"memory": "Memory",
"modules": "Modules",
- "overview": "Overview",
"ports": "Ports",
"python-modules": "Python modules",
"snapshots": "Snapshots",
diff --git a/pages/querying/functions.mdx b/pages/querying/functions.mdx
index 0cf776f51..cd6b61126 100644
--- a/pages/querying/functions.mdx
+++ b/pages/querying/functions.mdx
@@ -21,39 +21,39 @@ This section contains the list of supported functions.
| Name | Signature | Description |
| --------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
- | `duration` | duration(value: string\|Duration) -> (Duration) | Returns the data type that represents a period of time. |
- | `date` | date(value: string\|Date) -> (Date) | Returns the data type that represents a date with year, month, and day. |
- | `localTime` | localTime(value: string\|LocalTime) -> (LocalTime) | Returns the data type that represents time within a day without timezone. |
- | `localDateTime` | localDateTime(value: string\|LocalDateTime)-> (LocalDateTime) | Returns the data type that represents a date and local time. |
+ | `duration` | `duration(value: string\|Duration) -> (Duration)` | Returns the data type that represents a period of time. |
+ | `date` | `date(value: string\|Date) -> (Date)` | Returns the data type that represents a date with year, month, and day. |
+ | `localTime` | `localTime(value: string\|LocalTime) -> (LocalTime)` | Returns the data type that represents time within a day without timezone. |
+ | `localDateTime` | `localDateTime(value: string\|LocalDateTime)-> (LocalDateTime)` | Returns the data type that represents a date and local time. |
### Scalar functions
- | Name | Signature | Description |
- | ------------ | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | `assert` | `assert(expression: boolean, message: string = null) -> ()` | Raises an exception if the given argument is not `true`. |
- | `coalesce` | `coalesce(expression: any [, expression: any]*) -> (any)` | Returns the first non-`null` value in the given list of expressions. |
- | `counter` | `counter(name: string, initial-value: integer, increment: integer = 1) -> (integer)` | Generates integers that are guaranteed to be unique within a single query for a given counter name. The increment parameter can be any integer besides zero. |
- | `degree` | `degree(node: Node) -> (integer)` | Returns the number of relationships (both incoming and outgoing) of a node. |
- | `outDegree` | `outDegree(node: Node) -> (integer)` | Returns the number of outgoing relationships of a node. |
- | `inDegree` | `inDegree(node: Node) -> (integer)` | Returns the number of incoming relationships of a node. |
- | `endNode` | `endNode(relationship: Relationship) -> (Node)` | Returns the destination node of a relationship. |
- | `head` | `head(list: List[any]) -> (any)` | Returns the first element of a list. |
- | `id` | id(value: Node\|Relationship) -> (integer) | Returns identifier for a given node or relationship. The identifier is generated during the initialization of a node or a relationship and will be persisted through the durability mechanism. |
- | `last` | `last(list: List[any]) -> (any)` | Returns the last element of a list. |
- | `properties` | properties(value: Node\|Relationship) -> (Map[string, any]) | Returns the property map of a node or a relationship. |
- | `size` | size(value: List[any]\|string\|Map[string, any]\|Path) -> (integer) | Returns the number of elements in the value. When given a **list** it returns the size of the list. When given a string it returns the number of characters. When given a path it returns the number of expansions (relationships) in that path. |
- | `startNode` | `startNode(relationship: Relationship) -> (Node)` | Returns the starting node of a relationship. |
- | `toBoolean` | toBoolean(value: boolean\|integer\|string) -> (boolean) | Converts the argument to a boolean. |
- | `toFloat` | toFloat(value: number\|string) -> (float) | Converts the argument to a floating point number. |
- | `toInteger` | toInteger(value: boolean\|number\|string) -> (integer) | Converts the argument to an integer. |
- | `toString` | toString(value: string\|number\|Date\|LocalTime\|LocalDateTime\|Duration\|boolean) -> (string) | Converts the argument to a string. |
- | `type` | `type(relationship: Relationship) -> (string)` | Returns the type of a relationships as a character string. |
- | `timestamp` | `timestamp() -> (integer)` | Returns the difference, measured in microseconds, between the current time and midnight, January 1, 1970 UTC. |
+ | Name | Signature | Description |
+ | ------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+ | `assert` | `assert(expression: boolean, message: string = null) -> ()` | Raises an exception if the given argument is not `true`. |
+ | `coalesce` | `coalesce(expression: any [, expression: any]*) -> (any)` | Returns the first non-`null` value in the given list of expressions. |
+ | `counter` | `counter(name: string, initial-value: integer, increment: integer = 1) -> (integer)` | Generates integers that are guaranteed to be unique within a single query for a given counter name. The increment parameter can be any integer besides zero. |
+ | `degree` | `degree(node: Node) -> (integer)` | Returns the number of relationships (both incoming and outgoing) of a node. |
+ | `outDegree` | `outDegree(node: Node) -> (integer)` | Returns the number of outgoing relationships of a node. |
+ | `inDegree` | `inDegree(node: Node) -> (integer)` | Returns the number of incoming relationships of a node. |
+ | `endNode` | `endNode(relationship: Relationship) -> (Node)` | Returns the destination node of a relationship. |
+ | `head` | `head(list: List[any]) -> (any)` | Returns the first element of a list. |
+ | `id` | `id(value: Node\|Relationship) -> (integer)` | Returns identifier for a given node or relationship. The identifier is generated during the initialization of a node or a relationship and will be persisted through the durability mechanism. |
+ | `last` | `last(list: List[any]) -> (any)` | Returns the last element of a list. |
+ | `properties` | `properties(value: Node\|Relationship) -> (Map[string, any])` | Returns the property map of a node or a relationship. |
+ | `size` | `size(value: List[any]\|string\|Map[string, any]\|Path) -> (integer)` | Returns the number of elements in the value. When given a **list** it returns the size of the list. When given a string it returns the number of characters. When given a path it returns the number of expansions (relationships) in that path. |
+ | `startNode` | `startNode(relationship: Relationship) -> (Node)` | Returns the starting node of a relationship. |
+ | `toBoolean` | `toBoolean(value: boolean\|integer\|string) -> (boolean)` | Converts the argument to a boolean. |
+ | `toFloat` | `toFloat(value: number\|string) -> (float)` | Converts the argument to a floating point number. |
+ | `toInteger` | `toInteger(value: boolean\|number\|string) -> (integer)` | Converts the argument to an integer. |
+ | `toString` | `toString(value: any) -> (string)` | Converts the argument to a string. |
+ | `type` | `type(relationship: Relationship) -> (string)` | Returns the type of a relationships as a character string. |
+ | `timestamp` | `timestamp() -> (integer)` | Returns the difference, measured in microseconds, between the current time and midnight, January 1, 1970 UTC. |
### Pattern functions
| Name | Signature | Description |
| --------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
- | `exists` | `exists(pattern: Pattern)` | Checks if a pattern exists as part of the filtering clause. Symbols provided in the MATCH clause can also be used here. |
+ | `exists` | `exists(pattern: Pattern)` | Checks if a pattern exists as part of the filtering clause. Symbols provided in the MATCH clause can also be used here. |
### Lists
@@ -61,12 +61,12 @@ This section contains the list of supported functions.
| --------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `all` | `all(variable IN list WHERE predicate)` | Check if all elements of a list satisfy a predicate. NOTE: Whenever possible, use Memgraph's lambda functions when matching instead. |
| `any` | `any(element IN list WHERE predicate_using_element)` | Check if any element in the list satisfies the predicate. |
- | `extract` | extract(variable IN list\|expression) | A list of values obtained by evaluating an expression for each element in list. |
- | `keys` | keys(value: Node\|Relationship) -> (List[string]) | Returns a list keys of properties from a relationship or a node. Each key is represented as string. |
+ | `extract` | `extract(variable IN list\|expression)` | A list of values obtained by evaluating an expression for each element in list. |
+ | `keys` | `keys(value: Node\|Relationship) -> (List[string])` | Returns a list keys of properties from a relationship or a node. Each key is represented as string. |
| `labels` | `labels(node: Node) -> (List[string])` | Returns a list of labels from a node. Each label is represented as string. |
| `nodes` | `nodes(path: Path) -> (List[Node])` | Returns a list of nodes from a path. |
| `range` | `range(start-number: integer, end-number: integer, increment: integer = 1) -> (List[integer])` | Constructs a list of value in given range. |
- | `reduce` | reduce(accumulator = initial_value, variable IN list\|expression) | Accumulate list elements into a single result by applying an expression. |
+ | `reduce` | `reduce(accumulator = initial_value, variable IN list\|expression)` | Accumulate list elements into a single result by applying an expression. |
| `relationships` | `relationships(path: Path) -> (List[Relationship])` | Returns a list of relationships (edges) from a path. |
| `single` | `single(variable IN list WHERE predicate)` | Check if only one element of a list satisfies a predicate. |
| `tail` | `tail(list: List[any]) -> (List[any])` | Returns all elements after the first of a given list. |
@@ -77,43 +77,43 @@ This section contains the list of supported functions.
| Name | Signature | Description |
| ------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
- | `abs` | abs(number: integer\|float) -> (integer\|float) | Returns the absolute value of a number. |
- | `acos` | acos(number: integer\|float) -> (float) | Calculates the arccosine of a number between -1 and 1 in radians. |
- | `asin` | asin(number: integer\|float) -> (float) | Calculates the arcsine of a number between -1 and 1 in radians. |
- | `atan` | atan(number: integer\|float) -> (float) | Calculates the arctangent of a given number in radians. |
- | `atan2` | atan2(y: integer\|float, x: integer\|float) -> (float) | Calculates a unique arctangent value from a set of coordinates in radians. |
- | `ceil` | `ceil(number: float) -> (integer)` | Returns the smallest integer greater than or equal to the given float number. |
- | `cos` | cos(number: integer\|float) -> (float) | Calculates the cosine of an angle specified in radians. |
+ | `abs` | `abs(number: integer\|float) -> (integer\|float)` | Returns the absolute value of a number. |
+ | `acos` | `acos(number: integer\|float) -> (float)` | Calculates the arccosine of a number between -1 and 1 in radians. |
+ | `asin` | `asin(number: integer\|float) -> (float)` | Calculates the arcsine of a number between -1 and 1 in radians. |
+ | `atan` | `atan(number: integer\|float) -> (float)` | Calculates the arctangent of a given number in radians. |
+ | `atan2` | `atan2(y: integer\|float, x: integer\|float) -> (float)` | Calculates a unique arctangent value from a set of coordinates in radians. |
+ | `ceil` | `ceil(number: float) -> (integer)` | Returns the smallest integer greater than or equal to the given float number. |
+ | `cos` | `cos(number: integer\|float) -> (float)` | Calculates the cosine of an angle specified in radians. |
| `e` | `e() -> (float)` | Returns the base of the natural logarithm (2.71828).. |
- | `exp` | exp(number: integer\|float) -> (float) | Calculates `e^n` where `e` is the base of the natural logarithm, and `n` is the given number. |
+ | `exp` | `exp(number: integer\|float) -> (float)` | Calculates `e^n` where `e` is the base of the natural logarithm, and `n` is the given number. |
| `floor` | `floor(number: float) -> (integer)` | Returns the largest integer smaller than or equal to the given float number. |
- | `log` | log(number: integer\|float) -> (float) | Calculates the natural logarithm of a given number. |
- | `log10` | log10(number: integer\|float) -> (float) | Calculates the logarithm (base 10) of a given number. |
+ | `log` | `log(number: integer\|float) -> (float)` | Calculates the natural logarithm of a given number. |
+ | `log10` | `log10(number: integer\|float) -> (float)` | Calculates the logarithm (base 10) of a given number. |
| `pi` | `pi() -> (float)` | Returns the constant *pi* (3.14159). |
| `rand` | `rand() -> (float)` | Returns a random floating point number between 0 (inclusive) and 1 (exclusive). |
| `round` | `round(number: float) -> (integer)` | Returns the number, rounded to the nearest integer. Tie-breaking is done using the *commercial rounding*, where -1.5 produces -2 and 1.5 produces 2. |
- | `sign` | sign(number: integer\| float) -> (integer) | Applies the signum function to a given number and returns the result. The signum of positive numbers is 1, of negative -1 and for 0 returns 0. |
- | `sin` | sin(number: integer\|float) -> (float) | Calculates the sine of an angle specified in radians. |
- | `sqrt` | sqrt(number: integer\|float) -> (float) | Calculates the square root of a given number. |
- | `tan` | tan(number: integer\|float) -> (float) | Calculates the tangent of an angle specified in radians. |
+ | `sign` | `sign(number: integer\| float) -> (integer)` | Applies the signum function to a given number and returns the result. The signum of positive numbers is 1, of negative -1 and for 0 returns 0. |
+ | `sin` | `sin(number: integer\|float) -> (float)` | Calculates the sine of an angle specified in radians. |
+ | `sqrt` | `sqrt(number: integer\|float) -> (float)` | Calculates the square root of a given number. |
+ | `tan` | `tan(number: integer\|float) -> (float)` | Calculates the tangent of an angle specified in radians. |
### Aggregation functions
- | Name | Signature | Description |
- | --------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
- | `avg` | avg(row: int\|float] -> (float) | Returns an average value of rows with numerical values generated with the `MATCH` or `UNWIND` clause. |
- | `collect` | `collect(values: any) -> (List[any])` | Returns a single aggregated list containing returned values. |
- | `count` | `count(values: any) -> (integer)` | Counts the number of non-null values returned by the expression. |
- | `max` | max(row: integer\|float) -> (integer\|float) | Returns the maximum value in a set of values. |
- | `min` | min(row: integer\|float) -> (integer\|float) | Returns the minimum value in a set of values. |
- | `sum` | sum(row: integer\|float) -> (integer\|float) | Returns a sum value of rows with numerical values generated with the `MATCH` or `UNWIND` clause. |
+| Name | Signature | Description |
+|-----------|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
+| `avg` | `avg(row: int\|float) -> (float)` | Returns an average value of rows with numerical values generated with the `MATCH` or `UNWIND` clause. |
+| `collect` | `collect(values: any) -> (List[any])` | Returns a single aggregated list containing returned values. |
+| `count` | `count(values: any) -> (integer)` | Counts the number of non-null values returned by the expression. |
+| `max` | `max(row: integer\|float) -> (integer\|float)` | Returns the maximum value in a set of values. |
+| `min` | `min(row: integer\|float) -> (integer\|float)` | Returns the minimum value in a set of values. |
+| `sum` | `sum(row: integer\|float) -> (integer\|float)` | Returns a sum value of rows with numerical values generated with the `MATCH` or `UNWIND` clause. |
### Graph projection functions
- | Name | Signature | Description |
- | --------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
- | `project` | project(row: path) -> map("nodes":list[Node], "edges":list[Edge])| Creates a projected graph consisting of nodes and edges from aggregated paths.|
+ | Name | Signature | Description |
+ | --------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
+ | `project` | `project(row: path) -> map("nodes":list[Node], "edges":list[Edge])`| Creates a projected graph consisting of nodes and edges from aggregated paths. |
@@ -135,7 +135,7 @@ All aggregation functions can be used with the `DISTINCT` operator to perform ca
| `split` | `split(string: string, delimiter: string) -> (List[string])` | Returns a list of strings resulting from the splitting of the original string around matches of the given delimiter. |
| `startsWith` | `startsWith(string: string, substring: string) -> (boolean)` | Check if the first argument starts with the second. |
| `substring` | `substring(string: string, start-index: integer, length: integer = null) -> (string)` | Returns a substring of the original string, beginning with a 0-based index start and length. |
-| `toLower` | `toLower(string: string) -> (string)` | Returns the original string in lowercase. | |
+| `toLower` | `toLower(string: string) -> (string)` | Returns the original string in lowercase. |
| `toUpper` | `toUpper(string: string) -> (string)` | Returns the original string in uppercase. |
| `trim` | `trim(string: string) -> (string)` | Returns the original string with leading and trailing whitespace removed. |
diff --git a/public/pages/configuration/configuration-settings/memgraph-lab-init-data-file.png b/public/pages/configuration/configuration-settings/memgraph-lab-init-data-file.png
new file mode 100644
index 000000000..0446cd052
Binary files /dev/null and b/public/pages/configuration/configuration-settings/memgraph-lab-init-data-file.png differ
diff --git a/public/pages/configuration/configuration-settings/memgraph-lab-init-file.png b/public/pages/configuration/configuration-settings/memgraph-lab-init-file.png
new file mode 100644
index 000000000..f29ad00a5
Binary files /dev/null and b/public/pages/configuration/configuration-settings/memgraph-lab-init-file.png differ
diff --git a/public/pages/getting-started/memgraph-office-hours.svg b/public/pages/getting-started/memgraph-office-hours.svg
new file mode 100644
index 000000000..2c3266cb3
--- /dev/null
+++ b/public/pages/getting-started/memgraph-office-hours.svg
@@ -0,0 +1,25 @@
+