Neo4j: Labels, Relationships, and Properties
Labels
In Neo4j, labels are used to categorize nodes. A label helps to define the type or class of a node, allowing for efficient querying and organization of data.
Creating Nodes with Labels
CREATE (n:Person {name: 'Alice', age: 30})
In the example above, a node of type Person is created with properties name and age.
Relationships
Relationships in Neo4j connect nodes and are directional. They can also have properties, just like nodes.
Creating Relationships
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:FRIENDS_WITH {since: 2020}]->(b)
This creates a directed relationship FRIENDS_WITH from Alice to Bob with a property indicating when they became friends.
Properties
Properties are key-value pairs associated with nodes and relationships. They add additional context and detail to the data.
Adding Properties
MATCH (n:Person {name: 'Alice'})
SET n.email = 'alice@example.com'
The above command sets the email property for the node labeled Person with the name Alice.
Best Practices
- Use meaningful labels that reflect the nature of the data.
- Limit the number of properties on a node for optimal performance.
- Utilize relationships to indicate connections between entities clearly.
- Index frequently queried properties for faster lookups.
FAQ
What is the maximum number of labels a node can have?
A node can have up to 64 labels.
Can relationships have properties?
Yes, relationships can have properties just like nodes.
How do I delete a label from a node?
You can use the REMOVE clause to delete a label, for example: REMOVE n:LabelName.
Flowchart: Creating and Managing Nodes and Relationships
graph TD;
A[Create Node] --> B{Label?};
B -->|Yes| C[Assign Label];
B -->|No| D[Skip Label];
C --> E[Add Properties];
D --> E;
E --> F[Create Relationship];
F --> G[Assign Relationship Type];
G --> H[Add Relationship Properties];
