neo4j - 使用neo4j获取根父节点
问题描述
我已经将一个 csv 文件导入 neo4j 并为它们创建了节点和关系。
在上面,前两个节点位于 db1 下,后四个节点位于 db2 下。如何找到最后四个节点属于 db2?
下面是代码和csv文件columnname,tablename,databasename,systemname abc,1a,db1,Finance def,1a,db1,Finance ghi,1a,db1,Finance klm,1a,db1,Finance abc,1a,db2,Medical def ,1a,db2,Medical ghi,1a,db2,Medical klm,1a,db2,Medical nop,1a,db2,Medical qrs,1a,db2,Medical
I've created nodes and relationships for the above csv file in neo4j
This is for getting unique values
CREATE CONSTRAINT ON (c:ColumnName) ASSERT c.ColumnName IS UNIQUE;
CREATE CONSTRAINT ON (c:TableName) ASSERT c.TableName IS UNIQUE;
CREATE CONSTRAINT ON (c:DatabaseName) ASSERT c.DatabaseName IS UNIQUE;
CREATE CONSTRAINT ON (c:SystemName) ASSERT c.SystemName IS UNIQUE;
This is for loading csv file and creating nodes and relationships
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS line
MERGE (ColumnName:ColumnName {ColumnName: line.ColumnName})
MERGE (TableName:TableName {TableName:line.TableName})
MERGE (DatabaseName: DatabaseName {DatabaseName:line.DatabaseName})
MERGE (SystemName: SystemName {SystemName:line.SystemName})
This is creating relationships among the nodes
MERGE (ColumnName)-[:iscolumnof]->(TableName)
MERGE (TableName)-[:istableof]->(DatabaseName)
MERGE (DatabaseName)-[:isdatabaseof ]->(SystemName)
If, i select one node 'nop'and expand i'll get the node(1a) 1a and if i expand 1a i'll get all the
nodes(columns). How to find that 'nop' belongs to 'db2'?
解决方案
据我了解,你有一个模式
(:ColumnName)-[:iscolumnof]->(:TableName)-[:istableof]->(:DatabaseName)-[:isdatabaseof ]->(:SystemName)
如果要测试某个 :ColumnName 是否属于 :DatabaseName
WITH 'nop' AS columnName, 'db2' AS databaseName
MATCH (col:ColumnName {ColumnName:columnName}),(db:DatabaseName
{DatabaseName:databaseName})
RETURN EXISTS((col)-[:iscolumnof]->(:TableName)-[:istableof]->(db)) AS result
如果你想要 db2 的所有列
WITH 'db2' AS databaseName
MATCH (c:ColumnName)-[:iscolumnof]->(:TableName)-[:istableof]->(:DatabaseName {DatabaseName:databaseName})
RETURN c.ColumnName AS column
推荐阅读
- r - R - 在所有集群中导出一个函数(不是一个对象)
- azure - 用于检查条件的 Terraform 脚本
- python - 错误:超出配额(配额组“DNSResolutionsNonbillable”超出配额并限制“每天的 DNS 解析”
- go - Golang 信号处理和 time.Sleep() 交互
- javascript - 更改对象选定部分的顺序
- powerbi - 编写电源查询或 DAX 脚本以比较不区分大小写 (2) 文本字符串值,同时忽略文本字符串中的某些值?
- c++ - 如何使用读取系统调用写入文件?以及如何确定缓冲区大小?
- css - CSS网格和卡片的问题
- javascript - 将一些带有 javascript 的文本从 Xamarin.Forms 传递到 WebView
- javascript - 根据单击该行中的按钮突出显示或删除该行