美文网首页
Neo4J(Cypher语句)基础查询

Neo4J(Cypher语句)基础查询

作者: 慧琴如翌 | 来源:发表于2018-07-09 16:05 被阅读64次

欢迎各路大神临幸寒舍

以下节点标签为people,friend,用户自己也可以设置成其他标签,查询时需要用到标签。这个标签可以类比为关系数据库中的表名

创建节点、关系

创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’})  return  n;
创建节点(小红): create (n:people{name:’小红’,age:’18’,sex:’女’})  return  n;
创建关系(小明送礼物给小红):小明节点id为0,小红节点id为1
start a =node(0),b=node(1) create (a)-[n:gift]->(b)return n

属性查询

  • 查询18岁的人
Match (n: people) where n.age = 18 return n
  • 查询大于18岁的人
Match (n: people) where n.age > 18 return n
  • 查询大于等于18岁的人
Match (n: people) where n.age >= 18 return n
  • 查询不等于18岁的人
Match (n: people) where n.age <> 18 return n

关系查询

  • 正向查询
    查询小明送礼物给了哪些人,有两种写法:(以下例子类似)
1.   Match (n:people)-[: gift]->(end:people) where n.name='小明'  return end
2.   Match (n:people{name: '小明'})-[:gift]->(end:people) return end

  • 反向查询
    查询哪些人送了礼物给小明
Match (n:people{name: '小明'})<-[:gift]-(end:people) return end
  • 无方向查询
    查询和小明有礼物来往的人
Match (n:people{name: '小明'})-[:gift]-(end:people) return end

ID查询

在neo4j中,每一个节点,会自动有一个唯一Id。
查找id为1的节点,有两种方式:

1.  Start  n = node(1)  return  n
2.  Match  (n:people)  where  ID(n)=1  return  n 

级次查询(树形遍历)

[图片上传失败...(image-a26446-1531123466564)]

以根部为条件,查询第二层的节点

Match (start:people{name:’小明’})-[:gift*2..2]->(end:people) return end

以根部为条件,查询第一层和第二层的节点

Match (start:people{name:’小明’})-[:gift*1..2]->(end:people) return end

以根部为条件,按级次查询出所有直接或间接获得过小明的礼物的人

Match (start:people{name:’小明’})-[:gift*]->(end:people) return end

Delete

删除2个节点之间的关系:

Match (x:people{name:’小明’})-[r:gift]->(y:people{name:’小红’}) delete  r

删除节点,会删除和该节点有关的所有关系:

Match (n:people{name:’小红’}) delete n

Count

(不按属性)查询标签(people)中一共有多少节点(人):

Match (n:people)  return  count(n)

(按属性)查询标签(people)中年龄为18岁的一共有多少节点(人):
三种写法:

1.  Match (n:people) where  n.age=18   return  count(n)
2.  Match (n:people{age:’18’})  return  count(n)  
3.  Match (n:people)  return  count(n.age=18)

Limit

查询标签(people)中的10个节点(人):

Match (n:people)  return  n  limit  10

Distinct

查询标签(people)中所有的不同的age:

Match (n:people)   return  distinct(n.age)

Order by

根据标签(people)中的name 排序:

Match(n:people)   return  n  order by name    (默认升序)
Match(n:people)   return  n  order by name  asc   (升序)
Match(n:people)   return  n  order by name  desc  (降序)

Union all (Union)

求并集,不去重(去重用Union):

Match(n:people)  where  n.age=18  return n.name as name
Union all
Match(n:friend) where  n.age=18  return  n.name as name

In

查询id为0,5,8的节点:

Match  (n)  where ID(n)  IN[0,5,8]  return  n 

Exists

判断节点是否存在 name这个属性:

Match  (n)  where  exists(n.name)  return  n 

With

查询name以‘小’开头的节点:

Match  (n)   where  n.name  starts  with ‘小’  return  n 

查询name以‘明’结尾的节点:

Match  (n)   where  n.name  ends   with ‘明’  return  n

Contains

查询name中含有 ‘小’的节点

Match  (n)  where  n.name  Contains  ‘小’  return  n 

非原创,转载自:https://blog.csdn.net/free8666/article/details/52909523

相关文章

  • Neo4j之Cypher学习总结

    Cypher 语句 Cypher是图形数据库Neo4j的声明式查询语言。Cypher语句规则和具备的能力:Cyph...

  • Neo4j - Cypher Query Language -

    Cypher Query Language (CQL) 是 Neo4j 所使用的开放图形查询语言。Cypher 的...

  • Neo4J(Cypher语句)基础查询

    欢迎各路大神临幸寒舍 以下节点标签为people,friend,用户自己也可以设置成其他标签,查询时需要用到标签。...

  • neo4j:Cypher查询入门(三)

    neo4j使用使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大。 和SQL很相...

  • Neo4J(Cypher语句) 基础查询(一)

    Nodes(节点) 图谱的基本单位主要是节点和关系,他们都可以包含属性,一个节点就是一行数据,一个关系也是一行数据...

  • NEO4j的多标签、多关系查询

    对于节点的多节点匹配方案: 对于关系的多类型查询: 对于cypher 语法,建议参考:Neo4j Cypher R...

  • Nosql-图数据库-CQL简介

    CQL简介 CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询...

  • Neo4j - CQL简介

    CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。 Ne...

  • Neo4j Desktop导入CSV数据文件

    安装了neo4j Desktop来学习neo4j的Cypher语言,在导入csv文件时,输入以下语句执行后出错了,...

  • Neo4j-Cypher

    Cypher 是 借鉴了sql语句的 Neo4j 数据库操作语句 示例:查找john和john朋友的朋友 示例二:...

网友评论

      本文标题:Neo4J(Cypher语句)基础查询

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