我有一个大约有800k个节点的图,我想使用Cypher在它们之间创建随机关系。
下面的例子不起作用,因为笛卡尔乘积太大了:
match (u),(p)
with u,p
create (u)-[:LINKS]->(p);
例如,我希望每个节点有1个关系(800k),或者每个节点有10个关系(8M)。
简而言之,我需要一个查询Cypher来统一创建节点之间的关系。有人知道以这种方式创建关系的查询吗?
我是Neo4j和Cypher的新手,正在写我的学士学位论文,在社交网络的情况下,我将关系数据库与Neo4j图形数据库进行了比较。我已经在SQL和Cypher中定义了一些查询,以便在JMETER中通过JDBC和REST API进行性能测试。然而,我在声明Cypher查询以获取节点时遇到了问题,这些节点是某个节点的朋友的共同朋友。
我的第一种方法是这样的:
MATCH (me:Enthusiast {Id: 488})-[:abonniert]->(f:Enthusiast)-[:abonniert]->(fof:Enthusiast)<-[:abonniert]-(f) RET
我正在努力做一个带有cypher语句的链表。我试着为每个k做以下事情。链表和:下一个关系应该被k隔离。
match (elem:Event)<-[r:HAS_EVENT]-(k)
WITH elem ORDER BY elem.id ASC
WITH COLLECT(elem) AS elems
FOREACH (n IN RANGE(0, LENGTH(elems)-2) |
FOREACH (prec IN [elems[n]] |
FOREACH (next IN [elems[n+1]] |
MERGE (prec)-[:NEXT]->(next))))
因为不可能在FOR
我运行一个Cypher查询,并更新符合特定条件的节点标签。在更新匹配的节点之前,我还希望更新在同一查询中不传递该条件的节点。在Cypher中有一个结构可以帮助我实现这一点吗?
这是一个具体的提法。我有一个标签池,我从中选择并分配给节点。当我运行某个查询时,我将其中一个标签l分配给在查询中由WHERE子句指定的条件下返回的节点。但是,以前可以将l分配给其他节点,而我想要清除所有l节点,这些节点都不是此查询的结果。
WHERE子句中的条件可能是任意的;因此简单的否定可能行不通。示例代码如下:
MATCH (v)
WHERE <some set of conditions>
// her
我现在使用的代码非常慢,大约每秒插入20次,并且使用拆分器来创建多个csv文件来加载。有没有办法通过dotnet的Neo4jClient以正确的方式使用“使用定期提交1000”?
public async Task InsertEdgesByName(List<string> nodeListA, List<string> nodeListB,
List<int> weightList, string type)
{
for (var i = 0; i < nodeListA.Count; i += 20
我有一个相当大的社交图,我在其中执行如下的全局查询:
match (n:User)-[r:LIKES]->(k:User)
where not (k:User)-[]->(n:User)
return count(r);
它们占用了大量的时间和内存,所以我很好奇它们是否以最佳的方式表达。我有一种感觉,当我执行这样的查询时,Cypher首先匹配符合表达式的所有内容(这需要大量内存),然后开始计数。我宁愿遍历每个节点,检查模式,并在必要时更新计数器。这样,这样的查询将不需要大量的内存。那么,这样的查询实际上是如何执行的呢?如果它不是最优的,有没有办法让它变得更好(用Cypher)?
我有一个节点N,我需要得到它所有的第一个邻居(很像),但是,我只需要通过特定的边缘类型(具有特定属性的-> )连接的邻居。
在Cypher中,应该是这样的(在N是Tom的情况下,边缘类型是ACTED_IN):
MATCH (n:Person)-[r:ACTED_IN]->(n2) WHERE n.name = "Tom Hanks" return n, r, n2
我正在尝试将一个猎犬/SharpHound json文件导入到Neo4j中,但我遇到了以下错误: { "Neo4j only supports a subset of Cypher types for storage as singleton or array properties. Please refer to section cypher/syntax/values of the manual for more details.": 1 } 这是我的脚本: call apoc.periodic.iterate('
call apoc.load.json(
运行此Cypher查询:
MATCH (n:`User`) WHERE type = 'artist' SET n.updated_at = '2014-05-06 21:32:00', n.name = 'example' RETURN count(n)
这将返回匹配节点的数量,而不管它们是否受SET语句的影响。
有没有办法只返回受影响的节点数?
是否有方法根据属性值的类型匹配Neo4j/Cypher中的节点?我在找这样的东西:
MATCH (n:Person)
WHERE NOT(n.id_number isa STRING)
RETURN n
我能想到的最接近的
MATCH (n:Person)
WHERE NOT(n.id_number = toString(n.id_number))
RETURN n
尽管这仍然相当快,但根据概要文件,它不使用索引,而我认为isa-style查询可以使用索引。