我是一个Neo4J新手,我有一个简单的CSV源码和目标IP.我想在具有相同标签的节点之间创建关系.
像... source_ip >> ALERTS >> dest_ip,或者相反.
"dest_ip","source_ip"
"130.102.82.16","54.231.19.32"
"130.102.82.116","114.30.64.11"
"130.102.82.116","114.30.64.11"
...
LOAD CSV WITH HEADERS
FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
CREATE (alert:Alert { source_ip: csvLine.source_ip, dest_ip: csvLine.dest_ip})
MATCH (n:Alert) RETURN n LIMIT 25
dest_ip 130.102.82.16 source_ip 54.231.19.32
Run Code Online (Sandbox Code Playgroud)
....
这很好用.我的问题是如何在警报内部创建标签之间的关系?我已经尝试过很多次失败了.我猜我需要为Source和Dest设置单独的节点然后链接它们,只是不确定如何.
提前致谢!
和平,汤姆
显然,似乎以下WHERE子句不起作用,因为我们的查询中有两个关系(WorksAt和ResponsibleFor).如果只有一种关系,那么这就像魔法一样.在下面的查询中,查询返回部门科学中的所有课程,但它不会过滤掉Maria Smith教授的课程.我想做的只是获得在科学系工作的Maria Smith教授的课程.我遇到了似乎是潜在候选条款的WITH和Start子句,使其可以在将查询的一部分过滤掉之前将其发送到另一部分.
http://neo4j.com/docs/stable/query-with.html
但我还没有掌握这个概念.有人帮忙吗?
MATCH (d:Department)<-[w:WorksAt]-(t:Tutor)-[r:ResponsibleFor]->(c:Courses)
WHERE d.name='Science'
AND t.name='Maria Smith'
return c,r
Run Code Online (Sandbox Code Playgroud) 我有各种具有不同形式标签的节点:
(n:Label)
n.Name='ABS'
n.sample='ajx'
Run Code Online (Sandbox Code Playgroud)
我想将所有属性值更改为小写。即上述结果应为:
(n:Label)
n.Name='abs'
n.sample='ajx'
Run Code Online (Sandbox Code Playgroud)
我尝试了以下...
match(n:Label) SET n.Name`=toLower(n.Name)
Run Code Online (Sandbox Code Playgroud)
但是这个查询一次只更新一个属性。有没有办法在单个查询中同时更改所有属性。
我在Cypher中看过不同版本的"链接",例如:
match (n)-[r]-() delete, n, r
merge (n) -[:TO {dist:line.distance}] -> (m)
match (n:MyNode)-[r:TO]->(m) where not ((m)-->())
可以使用1)" - ",2)" - >"3)" - >"分配这些链接,我想知道这三种类型之间的区别是什么.在这些不同的背景下,我看到它们的使用方式不同,但我们想知道是否有一个理解这一点的一般规则.
我有一个包含三种节点类型的图:NodeX,NodeY和NodeZ
我有这个密码查询:
MATCH (x:NodeX)-[*]->(d)
WHERE x.Name = 'pqr'
RETURN x,d;
Run Code Online (Sandbox Code Playgroud)
这里(d)可以是NodeY或NodeZ.我想分别处理不同的nodetypes.就像是:
MATCH (x:NodeX)-[*]->(d)
WHERE x.Name = 'pqr'
WITH d
CASE WHEN typeof(d)=NodeY THEN {MATCH (y:NodeY)-[*]-(z:NodeZ)}
WHEN typeof(d)=NodeZ THEN {MATCH (z:NodeZ)-[*]-(y:NodeY)}
RETURN y,z
Run Code Online (Sandbox Code Playgroud)
y
并z
对应于d
.这可能吗?
我目前正在使用neo4j
,需要在大图中找到2个节点之间的路径。我正在使用以下密码查询:
MATCH p=(acq:Acquisition {id:'1'})-[r*]->(ecs:ExternalCommunicationService {id:'1'})
RETURN p
Run Code Online (Sandbox Code Playgroud)
一切正常(查询返回节点之间任意长度的路径),但是下面显示警告消息:
警告:不推荐使用此功能,以后的版本中将删除该功能。不建议将绑定关系绑定到可变长度模式中的列表。
在官方文档中使用与相同的模式*
。
在不得到任何警告的情况下(不使用不赞成使用的语法)查找节点之间任何长度的路径的正确方法是什么?
我创建了 2 个标签 Person,Movies by:
CREATE (ee:Person { name: "test", id: "1" })
CREATE (m:Movie { name: "movie_1", id: "2" })
Run Code Online (Sandbox Code Playgroud)
当我运行时:
START n=node(*)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r;
Run Code Online (Sandbox Code Playgroud)
但标签仍然存在。如何删除标签?
我想创建一个包含大约五个其他属性的节点,包括该节点的名称和一些特征.我将如何在create语句中添加这些属性或属性
CREATE (n {<node-name>:<label-name>})
Run Code Online (Sandbox Code Playgroud)
例如,如果我想为一个人创建一个节点,我会在该人之后命名并具有属性名称,权重,高度等.有没有办法将所有这些放在一个创建语句中?
我一直在尝试使用 neo4j 及其 apoc 进程库来获取 2 个节点之间的最短路径。
例如我创建2个节点如下
CREATE (:Point {title:'A'})
CREATE (:Point {title:'B'})
Run Code Online (Sandbox Code Playgroud)
然后我就这样建立他们的关系
MATCH (u1:Point {title:'A'}), (u2:Point {title: 'B'})
CREATE (u1)-[:distance {value:10}]->(u2)
Run Code Online (Sandbox Code Playgroud)
现在我已经建立了从 A 到 B 的直接关系,反之亦然。所以当我如下调用 apoc Dijkstra 时
MATCH (start:Point {title: 'B'}), (end:Point {title: 'B'})
CALL apoc.algo.dijkstra(start, end, 'distance', 'value') YIELD path, weight
RETURN path, weight
Run Code Online (Sandbox Code Playgroud)
我不应该得到任何结果,因为它们不是从 B 到 A 的定向路径。但我得到的结果与使用从 A 到 B 的路径运行查询时相同。
有人能告诉我为什么会这样吗?为什么Dijkstra不顾方向?任何帮助将非常感激。