——感激博主 悦时光 的文章cypher查问入门给了我肯定的帮忙
相熟cypher语言
老手在执行neo4j查问时,先要理解一些常识:
1、查问后展现时,抉择text格局后所展现的是每个节点的各项属性;table格局所展现的是节点的全副json信息。
2、节点所有的节点模式:
都有三个键:identity、labels、properties:
{
"identity": 13333,
"labels": [
"乡镇"
],
"properties": {
"乡镇id": "5cd1483789730d2fec6a878b",
"乡镇名称": "密云镇",
"乡镇代码": "110118100000"
}
}
3、关系的模式:
{
"identity": 1077341,
"start": 2380,
"end": 5725,
"type": "所在地区",
"properties": {
}
}
查询语言
1、展现所有节点的所有信息
match (n) return n
后果:崩掉(内存间接占用14个G)
2、依据指定的labels,展现某一类节点
match (n:乡镇) return n.乡镇名称
后果:返回 乡镇 的属性:节点的乡镇名称:
也能够依据某一属性值来查问一个具体节点(其中’水电站’是labels,水电站名称属于properties):
match (n:水电站{水电站名称:'李家峡水电站'}) return n
也能够不指定labels(不晓得这个实体属于哪一类实体时)
match (n{河流名称:'黄河'}) return n
2.1、返回某个实体的某项属性(已知labels、属性中的名称)
match (n:河流{河流名称:'黄河'}) return n.`河流面积`
3、找所有跟三峡大坝无关的其余节点,’三峡大坝’是实体的某一属性名
match(directory{大坝名称:’三峡大坝’})——(en)return en
返回的是两个节点(有id标识)
3.1试试去掉directory:
match ({大坝名称:'三峡大坝'})--(en) return en
成果和有directory雷同
3.2 匹配检索(比3.1更加严格,多了河流这个标签的束缚):
match (:河流{河流名称:'黄河'})--(en) return en
后果有52个(蕴含各种省份、装机容量、水库简介、水库代码、湖泊代码、湖泊简介、大坝名称等)
4 波及where的限度
match ({河流名称:'黄河'})-[:`所在地区`]->(loc)
where loc.省份名称='山西省' or loc.省份名称='青海省'
return loc
5 关系——比如说我想找内蒙古和黄河的关系:
match (:河流{河流名称:'黄河'})-[r]->(:省{省份名称:'内蒙古自治区'})
return r,type(r)
note:在——之后有没有>都能够,但如果要应用<——,则须要把两个实体反过来放
6 实体相干的函数:
return id( )
return type( ) # 关系类型
return labels( ) # 节点标签
return keys( ) # 节点/关系 的属性键
return properties( ) # 节点/关系 的属性
7 关系的模式
变长门路的模式
8 属性——晓得一个属性,返回所有领有此属性的实体
MATCH (n) WHERE EXISTS(n.`是否为正式主题词`) RETURN n
8.1 更进一步——依据属性返回领有此属性的实体品种
MATCH (n) WHERE EXISTS(n.`简介`) RETURN labels(n)
发表回复