山东建设信息网站要制作自己的网站需要什么

当前位置: 首页 > news >正文

山东建设信息网站,要制作自己的网站需要什么,旺店通erp企业版下载app,各行业网站建设方案书【Neo4j数据库】图数据库_Neo4j增加节点#xff08;关系#xff09;、查询、删除操作解析#xff08;Cypher语句#xff09; 文章目录 【Neo4j数据库】图数据库_Neo4j增加节点#xff08;关系#xff09;、查询、删除操作解析#xff08;Cypher语句#xff09;1. 介绍2…【Neo4j数据库】图数据库_Neo4j增加节点关系、查询、删除操作解析Cypher语句 文章目录 【Neo4j数据库】图数据库_Neo4j增加节点关系、查询、删除操作解析Cypher语句1. 介绍2. 节点的创建和查询2.1 创建节点2.2 查询节点 3. 创建关系3.1 创建没有任何属性的关系3.2 创建关系并设置关系的属性3.3 创建双向关系3.4 查询关系3.5 查询有向关系的节点3.6 为关系命名3.7 查询特定的关系类型 4. 删除两种方法4.1 命令行直接删除节点4.2 删除数据库文件 5. 常用查询关键词5.1 count5.2 limit5.3 Distinct5.4 Order by5.5 根据id查找5.6 In的用法5.7 Exists5.8 With5.9 Contains5.10 Union all (Union) 6. 补充6.1 创建一个完整的Path6.2 为节点增加一个属性6.3 为节点增加标签6.4 为关系增加属性6.5 MERGE6.6 跟实体相关的函数 参考 1. 介绍 Cypher语言的关键字不区分大小写但是属性值标签关系类型和变量是区分大小写的。 Neo4j 中不存在表的概念只有标签(labels)节点(Node)关联(Relation)路径(path)标签里存的节点节点和关联可以简单理解为图里面的点和边路径是用节点和关联表示的如(a)-[r]-(b)表示一条从节点 a 经关联 r 到节点 b 的路径。 在数据查询中 节点一般用小括号()关系中用括号[] 2. 节点的创建和查询 注意执行多条cypher语句时语句之间用分号隔开browser中的设置菜单下勾选 Enable multi statement query editor默认是没有选中的。 2.1 创建节点 // 创建Person 标签,刘德华等若干节点,各自有name,birthday ,born,englishname等属性。 create (n:Person { name: ‘刘德华’, birthday:‘1961年9月27日’,born: 1961 ,englishname:‘Andy Lau’}) create (n:Person { name: ‘朱丽倩’, birthday:‘1966年4月6日’,born: 1966 ,englishname:‘Carol’}) ; create (n:Person { name: ‘刘向蕙’, birthday:‘2012年5月9日’,born: 2012 ,englishname:‘Hanna’}) ; create (n:Person { name: ‘任贤齐’, birthday:‘1966年6月23日’,born: 1966 ,englishname:‘Richie Jen’}) ; create (n:Person { name: ‘金城武’, birthday:‘1973年10月11日’,born: 1973,englishname:‘Takeshi Kaneshiro’}) ; create (n:Person { name: ‘林志玲’, birthday:‘1974年11月29日’,born: 1974,englishname:‘zhilin’}) ;// 创建Movie 标签,彩云曲等若干节点,各自有title,released 等属性 create (n:Movie { title: ‘彩云曲’,released: 1981}) create (n:Movie { title: ‘神雕侠侣’,released: 1983}) create (n:Movie { title: ‘暗战’,released: 2000}) create (n:Movie { title: ‘拆弹专家’,released: 2017})2.2 查询节点 // 查询整个图形数据库 match(n) return n; // 查询具有指定标签的节点 match(n:Movie) return n; // where 谓词查询 *根据name查询 match (n:Person) where n.name‘林志玲’ return n *根据节点的制定属性查询 match(n{name:‘林志玲’}) return n; // 根据节点属性的条件查询 match(n) where n.born1967 return n;3. 创建关系 关系的构成StartNode - [Variable:RelationshipType{Key1:Value1,Key2:Value2}] - EndNode 在创建关系时必须指定关系类型。 3.1 创建没有任何属性的关系 MATCH (a:Person),(b:Movie) WHERE a.name ‘刘德华’ AND b.title ‘暗战’ CREATE (a)-[r:DIRECTED]-(b) RETURN r; // 查询关系 MATCH p()-[r:DIRECTED]-() RETURN p LIMIT 253.2 创建关系并设置关系的属性 MATCH (a:Person),(b:Movie) WHERE a.name ‘刘德华’ AND b.title ‘神雕侠侣’ CREATE (a)-[r:出演 { roles:[‘杨过’] }]-(b) RETURN r; // 查询关系 MATCH p()-[r:出演]-() RETURN p LIMIT 253.3 创建双向关系 // 刘德华的女是刘向蕙,刘向蕙的父亲是刘德华 MATCH (a:Person),(c:Person) WHERE a.name ‘刘德华’ AND c.name ‘刘向蕙’ CREATE (a)-[r:父亲 { nickname:‘甜心’ }]-©, ©-[d:女儿 { nickname:‘爹地’ }]-(a) RETURN r;然后查询 MATCH p()-[r:父亲]-() RETURN p LIMIT 25//关系建错了删除后重新建立 match(a:Person)-[r:女儿]- (b:Person)delete r; match(a:Person)-[r:父亲]- (b:Person)delete r//重新建立双向关系 MATCH (a:Person),(c:Person) WHERE a.name ‘刘德华’ AND c.name ‘刘向蕙’ CREATE (a)-[r:父亲 { nickname:‘爹地’ }]-©, ©-[d:女儿 { nickname:‘甜心’ }]-(a) RETURN r;接着查看关系 match p()-[r:父亲]- () return p limit 2然后再多创建几个关系 MATCH (a:Person),(c:Movie) WHERE a.name ‘刘德华’ AND c.title ‘彩云曲’ CREATE (a)-[r:出演 { partner:‘张国荣’ }]-©, ©-[d:演员 { rolename:‘阿华哥’ }]-(a) RETURN r;MATCH (a:Person),(c:Movie) WHERE a.name ‘刘德华’ AND c.title ‘拆弹专家’ CREATE (a)-[r:出演 { partner:‘赵薇,高圆圆’ }]-©, ©-[d:演员 { rolename:‘华仔’ }]-(a) RETURN r;MATCH (a:Person),(c:Movie) WHERE a.name ‘刘德华’ AND c.title ‘神雕侠侣’ CREATE (a)-[r:出演 { partner:‘刘亦菲’ }]-©, ©-[d:演员 { rolename:‘杨过’ }]-(a) RETURN r;继续添加关系 MATCH (a:Person),(c:Person) WHERE a.name ‘刘德华’ AND c.name ‘任贤齐’ CREATE (a)-[d:朋友 { sex:‘男’ }]-© RETURN d;MATCH (a:Person),(c:Person) WHERE a.name ‘刘德华’ AND c.name ‘金城武’ CREATE (a)-[d:朋友 { sex:‘男’ }]-© RETURN d;//这里没有给关系设置属性sex MATCH (a:Person),(c:Person) WHERE a.name ‘刘德华’ AND c.name ‘林志玲’ CREATE (a)-[d:朋友]-© RETURN d;查询Person关系 MATCH (n:Person) RETURN n3.4 查询关系 在Cypher中关系分为三种符号“–”表示有关系忽略关系的类型和方向符号“–”和“–”表示有方向的关系 // 查询整个数据图形 match(n) return n; // 查询跟指定节点有关系的节点 match(n)–(m:Movie) return n3.5 查询有向关系的节点 // 查询和刘德华有关系的电影 MATCH (:Person { name: ‘刘德华’ })–(movie)RETURN movie;3.6 为关系命名 // 通过[r]为关系定义一个变量名通过函数 type 获取关系的类型 MATCH (:Person { name: ‘刘德华’ })-[r]-(movie) RETURN r,type®;3.7 查询特定的关系类型 // 通过[Variable:RelationshipType{Key:Value}]指定关系的类型和属性。 MATCH (:Person { name: ‘刘德华’ })-[r:出演{partner:‘张国荣’}]-(Movie) RETURN r,type®;// 查询和刘德华和张国荣合作过的电影 MATCH (:Person { name: ‘刘德华’ })-[r:出演{partner:‘张国荣’}]-(m:Movie) RETURN m;// 查询被刘德华称呼为甜心的女儿 MATCH (:Person { name: ‘刘德华’ })-[r:女儿{nickname:‘甜心’}]-(m:Person) return m// 查询刘德华的老婆是谁 Match (n:Person{name: ‘刘德华’})-[:wife]-(a:Person) return a// 查询刘德华出演过的电影 match(:Person{name‘l刘德华’})-[r:‘出演’]- (a:Movie) return a4. 删除两种方法 4.1 命令行直接删除节点 如果数据库中的数据量并不大节点数相对较少我们可以通过命令行直接删除节点 1删除节点 create (n:City { name: ‘北京’}) Match (n:City{name:‘北京’}) delete n2删除关系 Match (a:Person{name:‘刘德华’})-[r:父亲]-(b:Person{name:‘刘向蕙’}) delete r Match (a:Person{name:‘刘向蕙’})-[r:女儿]-(b:Person{name:‘刘德华’}) delete r3删除对应节点及其所有关系也就是说只要符合键值对 { property-namevalue } 条件的节点都会被删除 match (n {property-name:value} ) detach delete (n)// 示例 //创建节点 merge(t:Test{id:01,name:hh}) merge(t:test{id:02,name:hh})//name为hh的两个节点及其关系都会删除 match (n{name:hh}) detach delete (n)4删除所有节点及其所有关系 此命令不用筛选条件直接将数据库中的所有节点及关系全部删除 match (n) detach delete (n)4.2 删除数据库文件 如果数据库中的数据量很大节点数非常多通过命令行删除会比较慢那么我们可以通过物理方式直接删除数据库。 此类操作直接删除了数据库数据当然都被清空了 方法 首先我们需要关闭 Neo4j 数据库的运行然后找到 Neo4j 数据库的存放目录也就是 NEO4J_HOME/data/ 。如果忘记了 NEO4J_HOME 可以去环境变量中查看 最后针对不同的 neo4j 版本进行不同的删除操作。 3.x版Neo4j 的 3.x 版本下有一个 databases 文件夹进入这个文件夹里面有一个 graph.db 的文件夹和一个 store_lock 文件。 这个 graph.db 文件夹就是我们当前使用的数据库直接删除即可。4.x版Neo4j 的 4.x 版本下有一个 databases 文件夹和一个 transactions 文件夹两个文件夹下都有 graph.db。 我们将这两个文件夹下的 graph.db 都删除即可。 5. 常用查询关键词 5.1 count 查询Person 一共有多少人 Match (n:Person ) return count(n)查询标签(Person)中born1966的一共有多少节点人 三种写法(第三种不能用似乎) 1、Match (n:Person) where n.born1966 return count(n) 2、Match (n:Person{born:1966}) return count(n) //特别注意类型,如果存的类似是数字类型,使用字符串就查不出来

  1. Match (n:Person) return count(n.born1966) //貌似无效查出来是错的?5.2 limit Match (n:Person) return n limit 35.3 Distinct 两个1966只显示一个 Match (n:Person) return distinct(n.born)5.4 Order by Match(n:Person) return n order by n.born (默认升序) Match(n:Person) return n order by n.born asc (升序) Match(n:Person) return n order by n.born desc (降序)5.5 根据id查找 match (n) where id(n)548 return n5.6 In的用法 Match (n) where ID(n) IN[353,145,547] return n Match (n) where ID(n) IN[145,175,353,547,548] return n5.7 Exists 节点存在 name这个属性的记录 Match (n) where exists(n.title) return n5.8 With 查询name以‘刘’开头的节点 Match (n) where n.name starts with ‘刘’ return n5.9 Contains 查询title中含有 ‘侠侣’的节点 Match (n:Movie) where n.title Contains ‘侠侣’ return n5.10 Union all (Union) 求并集不去重去重用Union, as 取别名: Match(n:Person) where n.born1966 return n.name as nameUnion allMatch(n:Movie) where n.released1983 return n.title as name6. 补充 6.1 创建一个完整的Path CREATE p (m:Person{ name:‘刘亦菲’,title:“演员” })-[:签约]-(neo)-[:签约]-(n:Person { name: ‘赵薇’,title:“投资人” }) RETURN p6.2 为节点增加一个属性 通过节点的ID获取节点Neo4j推荐通过where子句和ID函数来实现。 match (n) where id(n)358 set n.name ‘华谊兄弟’ return n;6.3 为节点增加标签 match (n) where id(n)358 set n:公司 return n;6.4 为关系增加属性 match (n)-[r]-(m) where id(n)357 and id(m)358 set r.经纪人‘程晨’ return n;接着让刘德华也和华谊兄弟签约 MATCH (a:Person),(c:公司) WHERE a.name ‘刘德华’ AND c.name ‘华谊兄弟’ CREATE (a)-[d:签约 { 经纪人:‘刘得得’ }]-© RETURN d;6.5 MERGE Merge子句的作用有两个 当模式Pattern存在时匹配该模式当模式不存在时创建新的模式功能是match子句和create的组合。在merge子句之后可以显式指定on creae和on match子句用于修改绑定的节点或关系的属性。 通过merge子句你可以指定图形中必须存在一个节点该节点必须具有特定的标签属性等。 如果不存在那么merge子句将创建相应的节点。通过merge子句匹配搜索模式匹配模式是一个节点有Person标签并且具有name属性如果数据库不存在该模式那么创建新的节点如果存在该模式那么绑定该节点 1基础。 MERGE (m:Person { name: ‘迈克尔·杰克逊’ }) RETURN m;2在merge子句中指定on create子句 如果需要创建节点那么执行on create子句修改节点的属性 MERGE (m:Person { name: ‘杰森·斯坦森’ }) ON CREATE SET m.registertime timestamp() RETURN m.name, m.registertime3在merge子句中指定on match子句 如果节点已经存在于数据库中那么执行on match子句修改节点的属性节点属性不存在则新增。 MERGE (m:Person) ON MATCH SET m.registertime timestamp() RETURN m.name, m.registertime4在merge子句中同时指定on create 和 on match子句(没有对应属性则修改不成功,不会新增属性) MERGE (m:Person{ name: ‘李连杰’ }) ON CREATE SET m.registertime timestamp() ON MATCH SET m.offtime timestamp() RETURN m.name, m.registertime,m.offtime6merge子句用于match或create一个关系 MATCH (m:Person { name: ‘刘德华’ }),(n:Movie { title: ‘神雕侠侣’ }) MERGE (m)-[r:导演]-(n) RETURN m.name, type®, n.title7merge子句用于match或create多个关系 赵薇既是神雕侠侣的导演,也是神雕侠侣的演员 MATCH (m:Person { name: ‘赵薇’ }),(n:Movie { title: ‘神雕侠侣’ }) MERGE (m)-[r:导演]-(n)-[r2:出演]-(m) RETURN m.name, type®,type(r2), n.title8merge子句用于子查询 先添加基础数据创建城市节点 create (n:City { name: ‘北京’,othername:‘帝都’}) create (n:City { name: ‘香港’,othername:‘HongKong’}) create (n:City { name: ‘台湾’,othername:‘湾湾’})9为Person标签的每个节点都增加一个属性 bornin match (n:Person) set n.bornin ‘’ return n;match (n) where id(n)175 set n.bornin ‘香港’ return n;match (n) where n.name‘金城武’ set n.bornin ‘台湾’ return n;10需求:查找刘德华和金城武的信息和所在地的othername(相当于mysql 连表查询) MATCH (p:Person) where p.name‘刘德华’ or p.name‘金城武’ MERGE (c:City { name: p.bornin }) RETURN p.name,p.born,p.bornin , c.othername;11创建刘德华出生地是香港这条关系 MATCH (a:Person),(c:City) WHERE a.name ‘刘德华’ AND c.name ‘香港’ CREATE (a)-[r:出生地]-© RETURN r;12需求:给Person中每个节点都创建一个出生地的关系,没有则返回null MATCH (p:Person) MERGE (c:City { name: p.bornin }) MERGE §-[r:出生地]-(c ) RETURN p.name, p.bornin, c.othername;13删除这些关系 Match (a:Person)-[r:出生地]-(c:City{name:’’}) delete r Match (a:City)-[r:出生地]-(c:Person) delete r14查询Person标签中不存在name属性的节点 Match (n:Person) where not exists(n.name) return n Match (n:Person) where not exists(n.name) delete ncreate (n:Prize { name: ‘金马奖’}); create (n:Prize { name: ‘奥斯卡金奖’}); create (n:Prize { name: ‘金鸡奖’}); create (n:Prize { name: ‘香港电影金像奖’});6.6 跟实体相关的函数 1通过id函数返回节点或关系的ID 查询Person标签中和刘德华有关系的 id(节点和关系) MATCH (:Person { name: ‘刘德华’ })-[r]-(movie) RETURN id®;2通过type函数查询关系的类型 查询Person标签中和刘德华相关的关系(以下三种结果相同) MATCH (:Person { name: ‘刘德华’ })-[r]-(a) MATCH (:Person { name: ‘刘德华’ })-[r]-(b) MATCH (:Person { name: ‘刘德华’ })-[r]-() RETURN type®;3通过lables函数查询节点的标签 查询和刘德华有关系的节点 MATCH (:Person { name: ‘刘德华’ })-[r]-p RETURN p;4通过keys函数查看节点或关系的属性键 MATCH (a) WHERE a.name ‘刘德华’ RETURN keys(a)5通过properties()函数查看节点或关系的属性 MATCH (a) WHERE a.name ‘刘德华’ RETURN properties(a)参考 【1】https://blog.csdn.net/qq_42582489/article/details/125545454 【2】https://blog.csdn.net/qq_35793394/article/details/107833467 【3】https://blog.csdn.net/poxiaomeng187/article/details/82496157