美文网首页
cypher笔记

cypher笔记

作者: 吃吃吃吃吃 | 来源:发表于2018-07-25 15:03 被阅读0次

    class DriverLifecycleExample:

    def __init__(self, uri, user, password):

    self._driver = GraphDatabase.driver(uri, auth=(user, password))

    def close(self):

                  self._driver.close()

    在导入时,merge 子句里面 只有在 已经存在 各个标签、属性、属性值 与当前 merge 后面描述的节点 完全相同的 情况下才不会重复创建多余节点。所以你要先整理数据源,保证csv中的每条数据相同的节点 要完全相同

    如果已经生成了多余节点,要合并 相同的节点,可以使用存储过程apoc.refactor.mergeNodes,试试,比较好用

    MATCH (n:Tag)

    WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count

    WHERE count > 1

    CALL apoc.refactor.mergeNodes(nodelist) YIELD node

    RETURN node


    https://stackoverflow.com/questions/42800137/neo4j-cypher-merge-duplicate-nodes

    合并nodes,似乎要确保完全一样,关系也可以合并:

    APOC Procedures has some graph refactoring procedures that can help. I think apoc.refactor.mergeNodes() ought to do the trick.

    Be aware that in addition to transferring all relationships from the other nodes onto the first node of the list, it will also apply any labels and properties from the other nodes onto the first node. If that's not something you want to do, then you may have to collect incoming and outgoing relationships from the other nodes and use apoc.refactor.to() and apoc.refactor.from() instead.

    Here's the query for merging nodes:

    MATCH (n:Tag)

    WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count

    WHERE count > 1

    CALL apoc.refactor.mergeNodes(nodelist) YIELD node

    RETURN node


    没有标签的节点

    MATCH (n) WHERE NOT labels(n) RETURN n


    neo4j使用cypher查询路径避免出现环路

    https://blog.csdn.net/wry2008wry/article/details/80899860 


    查找没有任何关系的节点

    MATCH (s) WHERE NOT ()-[]-(s) RETURN s


    查找tom的关系节点

    MATCH (n:Person{name:"tom"})-->() return n

    不必用where n.name=...


    四条及以内关系的任何点

    MATCH (n)-[*1..4]-() RETURN ...


    查找a和b最短关系路径

    MATCH p=shortestPath(

    (x:xxx{xxx:"xxx"})-[*]-(x:xxx{xxx:"xxx"})

    )


    mysql到处csv文件

    select ....

    into outfile 'xxx.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';


    所有演员各自参演电影的数量

    MATCH (a:Person)-[:ACTED_IN]->(m:Movie)

    WITH a,count(m) AS nrOfMovies

    RETURN a{.name, nrOfMovies}


    字段-数据元有多条关系的:

    match p=(n:物理表)-->(a:物理表字段)-[r]->(b:数据元) with n,a,count(r) as rels, collect(b) as de where rels>1 return n,a,rels,de

    注意 with里没有b,想想为什么


    foreach用法

    FOREACH (r IN relationships(path) | SET r.marked=true)

    FOREACH (value IN coll | CREATE (:Person {name:value}))


    CALL db.labels() YIELD label

    shortestPath((n1:Person)-[*..6]-(n2:Person)) Find a single shortest path.

    allShortestPaths((n1:Person)-[*..6]->(n2:Person))Find all shortest paths.

    range($firstNum, $lastNum, $step) AS list

    返回list的函数还有:labels(), nodes(), relationships(), filter(), extract()


    extract(x IN nodes(path) | x.prop)

    Extract properties from the nodes in a path.


    节点 由接口 org.neo4j.graphdb.Node 表示

    关系是 org.neo4j.graphdb.Relationship

    关系类型是 org.neo4j.graphdb.RelationshipType

    对属性操作的方法在org.neo4j.graphdb.PropertyContainer  【Node、Relationship接口都继承了】,常用 getProperty和setProperty


    MATCH (a:业务流程)-[r]->(b:底层业务)

    WITH a, b, collect(r) as rels

    CALL apoc.refactor.mergeRelationships(rels,{properties:"combine"})

    YIELD rel RETURN rel


    可视化

    https://neo4j.com/graph-visualization-neo4j/

    相关文章

      网友评论

          本文标题:cypher笔记

          本文链接:https://www.haomeiwen.com/subject/babpmftx.html