tutorial sheet español downloads cheat neo4j cypher

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?