我正在为我的大学做一些事情,我被要求创建一个系统,用数百万个节点(至少有100万到200万节点)构建完整的树。我试图使用定期提交来创建带有Load的树,它很好地完成了仅创建节点(普通笔记本上的70000毫秒)的工作。当我对边缘做同样的尝试时,它也没有缩放。
Using periodic commit LOAD CSV WITH HEADERS FROM 'file:///Archi.csv' AS line
Merge (:Vertex {name:line.from})<-[:EDGE {attr1: toFloat(line.attr1), attr2:toFloa
我想要编写一个单独的Cypher语句来测试路径的存在,如果这个部分不存在,就添加它。
考虑路径(:A)-[:REL]->(:B{id:123}),则路径的存在可以通过
OPTIONAL MATCH p = (:A)-[:REL]->(:B{id:123}) RETURN CASE COUNT(p) WHEN 0 THEN false ELSE true END
如果路径不存在,则返回false;如果路径不存在,则返回true。
路径可以由
CREATE (b:B{id:123}), (b)<-[:REL]-(:A)
但是,如果将这些语句组合在一起,因此如果路径丢失,则创建路径
我有一个会说几种语言的用户。我正在写一个查询,看看用户是否会说英语。我想通过搜索用户节点和语言节点之间是否存在关系来了解用户是否会说英语。我正在使用rels.to_other或rels.to_others进行此操作。正如下文所述,两者都失败了。"to_other“和"to_others”方法的区别是什么?
irb(main):105:0> u
=> #<User uuid: "b1461edd-a574-44a7-9555-68659a361be2", created_at: Tue, 06 Oct 2015 16:21:26 +0000, n
我有一个相当大的社交图,我在其中执行如下的全局查询:
match (n:User)-[r:LIKES]->(k:User)
where not (k:User)-[]->(n:User)
return count(r);
它们占用了大量的时间和内存,所以我很好奇它们是否以最佳的方式表达。我有一种感觉,当我执行这样的查询时,Cypher首先匹配符合表达式的所有内容(这需要大量内存),然后开始计数。我宁愿遍历每个节点,检查模式,并在必要时更新计数器。这样,这样的查询将不需要大量的内存。那么,这样的查询实际上是如何执行的呢?如果它不是最优的,有没有办法让它变得更好(用Cypher)?
最近,我将py2neo库从转换为,我不知道执行某些操作的新命令。
特别是,我被困在:
graph.merge_one
按标签和可选属性匹配或创建节点,并返回单个匹配节点。此方法用于唯一约束,如果找到多个匹配节点,则不会失败。()
例如:
from py2neo import Node, Graph
nicole = Node("Person", name="Nicole", age=24)
# adds the nicole element to the graph if it does not already exist a node labell
我在找什么
使用变量长度关系(请参阅),可以在两个节点之间有一个具有特定标签的可变数量的关系。
# Cypher
match (g1:Group)-[:sub_group*]->(g2:Group) return g1, g2
我正在中寻找与节点相同的东西,即对两个节点进行查询,在之间有可变的节点数,但是在节点上有一个标签条件,而不是关系
# Looking for something like this in Cypher:
match (g1:Group)-->(:Group*)-->(g2:Group) return g1, g2
示例
例如,我将使用这种机制在一个组结
例如:
我的Cypher查询是:
MATCH p=(a:AbstractEvent)-[r:NEXT]->(c:AbstractEvent)
WHERE NOT id(a) in [115]
RETURN p
但结果仍然包括115个“客户”节点与"UI.Click“节点的传出关系。为了表明这一点,我仍然需要115个“客户”节点,但没有那些外向的关系。
当匹配时,如何排除节点的所有传出关系?
顺便说一句,在这个例子中,RETURN p和RETURN a,r,c有什么区别?
任何帮助都将不胜感激,谢谢。
我有一个大约有800k个节点的图,我想使用Cypher在它们之间创建随机关系。
下面的例子不起作用,因为笛卡尔乘积太大了:
match (u),(p)
with u,p
create (u)-[:LINKS]->(p);
例如,我希望每个节点有1个关系(800k),或者每个节点有10个关系(8M)。
简而言之,我需要一个查询Cypher来统一创建节点之间的关系。有人知道以这种方式创建关系的查询吗?
使用cypher检测相当大的图中的循环的最佳方法是什么?
我有一个图,它有大约250000个节点和大约270000个关系,我想在大约10k个节点和涉及100k个关系的子图中检测循环。我写的密码是这样的
start
n = node:node_auto_index(some lucene query that returns about 10k nodes)
match
p = n-[:r1|r2|r3*]->n
return p
然而,事实证明这并不是非常有效。
有没有人能建议一个更好的方法。
让我们考虑一下
无人机(父)
四分机(儿童)
像素(大孩子)
以:SUB_CATEGORY为关系节点
下面的Cypher查询与其带有每个节点标记的部件一起获取
MATCH p=(n:Category)-[:SUB_CATEGORY*]->(m)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
RET
我编写了(并使用“配置文件”进行优化)一个Cypher查询,该查询回答给定节点的节点的邻居。现在,我发现一个apoc过程(apoc.neighbors.athop)似乎也在做同样的事情。
APOC版本更好吗?更快?更强壮?
我理解APOC的价值,当没有对应的规则Cypher为给定的行为。在收集邻居的情况下,Cypher看起来很容易:
MATCH (target:SomeLabel)
WITH target
MATCH (target)-[:ADJOINS]-(neighbor:SomeLabel)
WITH target, neighbor
据我所知,亚太行动委员会的对应方是:
MATCH
您好,如何将此SQL查询转换为CYPHER查询?:
SELECT n.enginetype, n.Rocket20, n.Yearlong, n.DistanceOn,
FROM TIMETAB AS n
JOIN PLANEAIR AS p ON (n.tailnum = p.tailNum)
如果在使用查询创建任何关系或任何内容之前它是请求,请也写下并帮助。谢谢
我想使用cypher来创建数组中的项和另一个节点之间的关系。
该查询的结果是相互连接的空节点的列表。
MATCH (person:person),(preference:preference)
UNWIND person.preferences AS p
WITH p
WHERE NOT (person)-[:likes]->(preference) AND
p = preference.name CREATE (person)-[r:likes]->(preference)
其中person.preferences包含首选项名称的数组。
很明显,我做错了什么。我是neo4j的