我有一个会说几种语言的用户。我正在写一个查询,看看用户是否会说英语。我想通过搜索用户节点和语言节点之间是否存在关系来了解用户是否会说英语。我正在使用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
您好,如何将此SQL查询转换为CYPHER查询?:
SELECT n.enginetype, n.Rocket20, n.Yearlong, n.DistanceOn,
FROM TIMETAB AS n
JOIN PLANEAIR AS p ON (n.tailnum = p.tailNum)
如果在使用查询创建任何关系或任何内容之前它是请求,请也写下并帮助。谢谢
我正在为我的大学做一些事情,我被要求创建一个系统,用数百万个节点(至少有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
3机集群中的neo4j 2.2.0,有~300万个“用户”节点和~10个“品牌”节点
当通过以下方式加载~20k行的":LIKES“关系时:
USING PERIODIC COMMIT 30000
LOAD CSV WITH HEADERS FROM "file://path/to/my/file.csv" AS csvLine
MATCH (user:User {id: toInt(csvLine.userId)})
MATCH (brand:Brand {id: csvLine.brandId})
MERGE (user)-[:LIKES]->(brand)
我通过灯泡使用neo4j的REST API,并尝试通过cypher删除一个节点和所有相关的边,如下所示:
from bulbs.neo4jserver import Graph as Neo4jGraph
db = Graph()
query = '''START d=node(57)
MATCH d-[r]-()
DELETE d,r
'''
t = db.cypher.execute(query)
(其中db是ne4j-database-Handler)。
..。但事情似乎并不是这
我有一个大约有800k个节点的图,我想使用Cypher在它们之间创建随机关系。
下面的例子不起作用,因为笛卡尔乘积太大了:
match (u),(p)
with u,p
create (u)-[:LINKS]->(p);
例如,我希望每个节点有1个关系(800k),或者每个节点有10个关系(8M)。
简而言之,我需要一个查询Cypher来统一创建节点之间的关系。有人知道以这种方式创建关系的查询吗?
我有一个相当大的社交图,我在其中执行如下的全局查询:
match (n:User)-[r:LIKES]->(k:User)
where not (k:User)-[]->(n:User)
return count(r);
它们占用了大量的时间和内存,所以我很好奇它们是否以最佳的方式表达。我有一种感觉,当我执行这样的查询时,Cypher首先匹配符合表达式的所有内容(这需要大量内存),然后开始计数。我宁愿遍历每个节点,检查模式,并在必要时更新计数器。这样,这样的查询将不需要大量的内存。那么,这样的查询实际上是如何执行的呢?如果它不是最优的,有没有办法让它变得更好(用Cypher)?
我有一个图形数据模型,其中所有节点都连接到一个或多个:策略节点。
有时,我需要修改一个子图,以便它将现有P:策略的所有关系替换为新P‘:策略的关系。我考虑的一般方法是识别与现有P:策略相关联的顶点V和边E的子集;创建新的P‘:策略,在V和P’之间创建新的关系E‘,然后删除现有关系E。
我有一个长度可变的查询,它标识了相关的P、V和E;该查询看起来像这样:
MATCH p=(v {..})-[nodes*]->(policy:policy {..}) return policy as P, nodes(p) as V, relationships(p) as E
这可以作为一个独立的查询很
我在找什么
使用变量长度关系(请参阅),可以在两个节点之间有一个具有特定标签的可变数量的关系。
# 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
示例
例如,我将使用这种机制在一个组结
第一次问起SO和一个新的cypher和neo4j。
我需要获取组成特定节点谱系的所有节点及其关系;要在有向图中显示它们,我需要一个nodes列表和一个关系列表(links)。这是我的虚拟,这是我想要得到的(节点加上链接):
这是我经过几个小时的研究和尝试后得出的结论:
MATCH lineage = (n:Sample {name:"P"})-[:CHILD_OF*]->(parent:Sample)
MATCH (parent)-[r_out]->(child)-[r_in]->(parent)
WHERE parent IN nodes(lineage)
我有一个问题,我如何合并文档的节点(Doc1、Doc2和Doc3),以获得更好的3个启动模式。
for index, row in import_ds.iterrows():
ind = ind+1
graph.cypher.execute("MERGE (Document:Document"+str(fnum)+" {Document:\"Doc"+str(fnum)+"\"})")
graph.cypher.execute("MERGE (Type:Type {Type:\"
我需要创建一个python函数,以便将节点和关系添加到图中,并返回创建的节点和关系的数量。
我已经使用graph.cypher.execute()添加了节点和关系。
arr_len = len(dic_st[story_id]['PER'])
for j in dic_st[story_id]['PER']:
graph.cypher.execute("MERGE (n:PER {name:{name}})",name = j[0].upper()) #creating the nodes of
下面的Cypher查询创建cnt属性,并在我第一次运行它时将其全部设置为0。第二次运行的确切查询将更新cnt属性。是否有可能为加载时添加的每个关系增加节点cnt,而无需运行两次?
LOAD CSV WITH HEADERS FROM "file:///graph_data.csv" AS row
MERGE (t1:Term {word:row.term1})
MERGE (t2:Term {word:row.term2})
WITH t1, t2, row
MERGE (t1)-[:TOGETHER {id:row.id}]-(t2)
ON MATCH SET
t1.