As more and more people discover the joy and the power of using Neo4j, we naturally find that we get more of the same questions and issues popping up.

Some questions require updates and improvements to the documentation (check out our new documentation, by the way). Some things, however, don’t really belong in a manual.

Introducing the Neo4j Knowledge Base

With a growing list of those things we wanted to provide a knowledge base for everything else.

Introducing the Neo4j Knowledge Base!

Learn All about the New Neo4j Knowledge Base (and How You Can Contribute) to Answer Common Questions

The current content covers a wide range of areas from Cypher tuning to import issues or network and hardware setups. You can view entries by area by following the tag listings.

Our plan is for the Knowledge Base to not just be a supplement to the Neo4j documentation, but for it to be a place where we can provide permanent and up-to-date links from our website, StackOverflow, our Slack group, and any other place where people find help and resources for Neo4j.

In order to make the Knowledge Base easy for us to update, we’ve used AsciiDoc with AsciiDoctor, our favorite markup language and toolchain for documentation, GraphGists and in-browser guides.

To ensure that we can easily and quickly update pages we’ve build the ascii_press Ruby gem which allows us to automatically synchronize articles to our website via WordPress, but also to our ZenDesk help center for our enterprise customers.

So if you find yourself with a question about Neo4j, check out the Neo4j Knowledge Base.

Contributing to the Neo4j Knowledge Base

If you don’t find an answer, please make a suggestion by raising an issue on our GitHub repository or sending an email to, best of course with a draft of the content you think makes sense for that topic. To make it easier, you can fork this template add your content and pass it along. If you are answering questions about Neo4j, keep the answer short and to the point and add a link to the canonical Knowledge Base entry. If there is none, please help us create one, so we can prevent outdated content being highly ranked in search engines causing confusion for our users.

Thanks a lot to Dave Gordon and Dana Canzano for providing most of the helpful content.

If you want to contribute to our Knowledge Base, the basic AsciiDoc source structure for a Knowledge Base article looks like this:

= How do I display the nodes with the most properties
:slug: how-do-i-display-the-nodes-with-the-most-properties
:zendesk-id: 214935268
:author: Dana Canzano
:neo4j-versions: 2.3, 3.0
:tags: cypher

To display the nodes with the most properties defined, run the following Cypher:

MATCH (n) 
RETURN labels(n), keys(n), size(keys(n)), count(*) 
ORDER BY size(keys(n)) DESC

Representative output is similar to:

|[Movie]|[TotalRevenue, year_of_release, name, id]|4|1

The first row of output indicates that there is a Label named Movie, which has 4
properties (TotalRevenue, year_of_release, name, id) and there is 1 node defined with
that Label and those properties.

This is then rendered as a published article that looks like this:

An Example Article in the Neo4j Knowledge Base

We hope the Knowledge Base is a helpful resource – let us know what you think!

Want to learn more on how relational databases (RDBMS) compare to their graph counterparts? Download this ebook, The Definitive Guide to Graph Databases for the RDBMS Developer, and discover when and how to use graphs in conjunction with your relational database.

Get the Ebook



About the Author

Michael Hunger & Brian Underwood , Neo4j Team

Michael Hunger & Brian Underwood Image

Michael Hunger has been passionate about software development for a very long time. For the last few years he has been working with Neo Technology on the open source Neo4j graph database filling many roles. As caretaker of the Neo4j community and ecosystem he especially loves to work with graph-related projects, users and contributors. As a developer Michael enjoys many aspects of programming languages, learning new things every day, participating in exciting and ambitious open source projects and contributing and writing software related books and articles.

Brian Underwood wants challenges that give him a chance to make the world kinder, simpler and more interesting. If you can give those challenges to him, you’ll be his new best friend. He loves what he made and the tools he used to make, but his pleasure comes more in the making and the learning of the new. He wants to make useful things that are bold, creative, and beautiful. He wants to make things that have never before existed.

1 Comment

Patrick says:


j’ai le code suivant :

CREATE (PersonneA:Location { name: “Hacker” })
CREATE (LocationB:Location { name: “Radio” })
CREATE (LocationC:Location { name: “WIFI” })
CREATE (LocationD:Location { name: “Bluetooth” })
CREATE (LocationE:Location { name: “Head Unit” })
CREATE (ConsequenceF:Location { name: “Steering” })

(PersonneA)-[:probability { probability: 5 }]->(LocationB),
(PersonneA)-[:probability { probability: 3 }]->(LocationB),
(LocationB)-[:probability { probability: 6 }]->(LocationC),
(LocationB)-[:probability { probability: 2 }]->(LocationC),
(LocationB)-[:probability { probability: 2 }]->(LocationC),
(LocationB)-[:probability { probability: 3 }]->(LocationD),
(LocationC)-[:probability { probability: 3 }]->(LocationE),
(LocationD)-[:probability { probability: 3 }]->(LocationE),
(LocationE)-[:probability { probability: 4 }]->(ConsequenceF)

pouvez-vous me donner la solution comment calculer les trajets qui ont la probabilité la plus petite et si entre deux noeuds il y a plusieurs relations il choisi la meilleur entre eux.

Merci d’avance,

Leave a Reply

Your email address will not be published. Required fields are marked *


Upcoming Event


Have a Graph Question?

Stack Overflow
Community Forums
Contact Us

Share your Graph Story?

Email us: