sheet - neo4j tutorial
Agregar relación a los nodos existentes con Cypher (1)
En Neo4j 2.0 puede crear índices de esquema para sus etiquetas y las propiedades que utiliza para la búsqueda:
CREATE INDEX ON :User(username)
CREATE INDEX ON :Role(name)
Para crear relaciones, puede usar:
MATCH (u:User {username:''admin''}), (r:Role {name:''ROLE_WEB_USER''})
CREATE (u)-[:HAS_ROLE]->(r)
El MATCH
usará un índice si es posible. Si no hay índice, buscará todos los nodos que lleven la etiqueta y verá si la propiedad coincide.
Nota: la sintaxis anterior solo funcionará con Neo4j 2.0.0-RC1 y superior.
Estoy probando Neo4j por primera vez. Estoy usando la edición de comunidad 2.0-RC1.
Creé algunos nodos:
MERGE (u:User{username:''admin'',password:''admin''})
MERGE (r1:Role{name:''ROLE_ADMIN''})
MERGE (r2:Role{name:''ROLE_WEB_USER''})
MERGE (r3:Role{name:''ROLE_REST_USER''})
y ahora quiero agregar relaciones entre los nodos. Sin embargo, no quiero borrar la base de datos existente creada con la secuencia de comandos anterior, agregar las declaraciones y volver a ejecutarla. Quiero agregar relaciones a los nodos existentes. Google me ayudó a encontrar esto:
START n=node(*), m=node(*)
where has(n.username) and has(m.name) and n.username = ''admin''
and m.name = ''ROLE_WEB_USER''
create (n)-[:HAS_ROLE]->(m)
Lo cual funciona bien (aunque no entiendo toda la sintaxis). Sin embargo, soy consciente de que esto encuentra cualquier nodo con una propiedad de nombre de usuario y cualquier nodo con una propiedad de nombre, en lugar de usar etiquetas para verificar que tenga el tipo correcto de nodo.
¿Cómo puedo hacer lo mismo usando etiquetas?