Command line interface

The easiest way to execute Cypher queries against Memgraph is by using Memgraph's command-line tool, mgconsole.

It is available as Docker image (opens in a new tab) and as a binary (opens in a new tab) for macOS, and Windows.

Install mgconsole

To install or start mgconsole to query a running Memgraph database instance, use the following steps:

You can use mgconsole on any OS from the Docker container. To connect to a remote Memgraph instance you need to provide the --host flag with the IP address or DNS name of the Memgraph instance and the --port flag with the port number, default 7687.

docker run -it memgraph/mgconsole:latest [--host HOST] [--port PORT]

If you want to connect to your local Memgraph instance, you can use the following command on Linux host:

docker run -it  memgraph/mgconsole:latest

If you are using MacOS or Windows, you can use the following command to start mgconsole:

docker run -it memgraph/mgconsole:latest --host host.docker.internal

On MacOS and Windows, host.docker.internal is a special DNS name that resolves to the host machine from a container. It is necessary to use it to connect to a Memgraph instance running on the host machine.

Execute Cypher queries

After the client has started, it should present a command prompt similar to:

mgconsole X.X
Connected to 'memgraph://127.0.0.1:7687'
Type :help for shell usage
Quit the shell by typing Ctrl-D(eof) or :quit
memgraph>

At this point, it is possible to execute Cypher queries against a running Memgraph database instance.

💡

You can use the TAB key to autocomplete commands in mgconsole.

If you are new to Cypher, check out how to query the database.

Query execution time

Upon successful execution of a query, Memgraph will return the execution time.

To get a breakdown of the execution time, set the -verbose_execution_info flag to true.

It will extend the information about the execution time with the following data:

Query COST estimate: 3066
Query PARSING time: 0.000175982 sec
Query PLAN EXECUTION time: 0.0154524 sec
Query PLANNING time: 8.054e-05 sec

The values show:

  • COST estimate - Internal planner estimation on the cost of the query. When comparing two query executions, an order of magnitude larger COST estimates might indicate the query's longer execution time.
  • PARSING time - Time spent checking if the query is valid and normalizing it for cache.
  • PLAN EXECUTION time - Time executing the plan.
  • PLANNING time - Time it takes the query planner to create the optimal plan to execute the query.

Configure mgconsole

Below are configurational flags you can use with mgconsole:

Main

FlagDescriptionTypeDefault
-csv_delimiterCharacter used to separate fields.string","
-csv_doublequoteControls how instances of the quotechar(") appearing inside a field should themselves be quoted. When true, the character is doubled. When false, the escapechar is used as a prefix to the quotechar. If csv_doublequote is false, csv_escapechar must be set.booltrue
-csv_escapecharCharacter used to escape the quote character (") if csv_doublequote is false.string""
-fit_to_screenFit output width to screen width.boolfalse
-historyUse the specified directory to save history.string"~/.memgraph"
-hostServer address. It can be a DNS resolvable hostname.string"127.0.0.1"
-no_historyDo not save history.boolfalse
-output_formatQuery output format. Can be csv, tabular or cypherl. If the output format is not tabular fit_to_screen flag is ignored. cypherl can currently only be used with the DUMP DATABASE query.string"tabular"
-passwordDatabase password.string""
-portServer port.int327687
-term_colorsUse terminal colors syntax highlighting.boolfalse
-use_sslUse SSL when connecting to the server.boolfalse
-usernameDatabase username.string""
-verbose_execution_infoOutput the additional information about query such as query cost, parsing, planning and execution times.boolfalse

Flags

FlagDescriptionTypeDefault
-flagfileLoad flags from a file.string""
-fromenvSet flags from the environment [example: 'export FLAGS_flag1=value'].string""
-tryfromenvSet flags from the environment if present.string""
-undefokComma-separated list of flag names. These flags can be specified on the command line even if the program does not define a flag with that name. IMPORTANT: Flags from the list that have arguments MUST use the flag=value format.string""
-tab_completion_columnsThe number of columns used in output for tab completion.int3280
-tab_completion_wordIf non-empty, HandleCommandLineCompletions() will hijack the process and attempt to do bash-style command line flag completion on this value.string""

Help

FlagDescriptionTypeDefault
-helpShow help on all flags [tip: all flags can have two dashes].boolfalse
-helpfullShow help on all flags -- same as -help.boolfalse
-helpmatchShow help on modules, names of which contain the specified substring.string""
-helponShow help on the modules named by this flag value.string""
-helppackageShow help on all modules in the main package.boolfalse
-helpshortShow help on the main module for this program only.boolfalse
-helpxmlProduce an .xml version of help.boolfalse
-versionShow version and build info then exit.boolfalse

Non-interactive mode

If you want to use interactive mode with a mgconsole in a docker container, use the following command:

echo "MATCH (n:Person) RETURN n;" | docker run -i memgraph/mgconsole:latest

To save the query results in a file, use the following command:

echo "MATCH (n:Person) RETURN n;" | docker run -i memgraph/mgconsole:latest > results.txt