小编Dia*_*par的帖子

查找没有特定关系的节点(Cypher/neo4j)

我有一个neo4j数据库,具有以下内容:

a:Foo
b:Bar
Run Code Online (Sandbox Code Playgroud)

大约10%的db有 (a)-[:has]->(b)

我只需要获得那些没有这种关系的节点!

以前做的事情()-[r?]-()会很完美!然而,它不再受支持:(而是,正如他们建议的那样

OPTIONAL MATCH (a:Foo)-[r:has]->(b:Bar) WHERE b is NULL RETURN a
Run Code Online (Sandbox Code Playgroud)

给我一个null结果,因为可选匹配需要BOTH节点在那里或BOTH节点不在那里......

那么如何获得所有未a:Foo附加的节点b:Bar

注意:数据集是数百万个节点,因此查询需要高效或以其他方式超时.

database neo4j cypher

17
推荐指数
2
解决办法
6930
查看次数

获取没有特定关系的节点(cypher/neo4j)

我有以下两种节点类型:

c:City {name: 'blah'}
s:Course {title: 'whatever', city: 'New York'}
Run Code Online (Sandbox Code Playgroud)

想要创造这个:

(s)-[:offered_in]->(c)
Run Code Online (Sandbox Code Playgroud)

我试图让所有与城市无关的课程与城市建立关系(如果不存在,城市就会被创造).然而,问题是我的数据集大约有500万个节点,并且我做出的任何查询超时(除非我增加10k).

......有人有什么建议吗?

编辑:

这是我现在正在运行的作业的查询(必须以10k块(数百万)完成,因为它需要几分钟.如果不存在则创建城市):

match (j:Job)
where not has(j.merged) and has(j.city)
WITH j 
LIMIT 10000
MERGE (c:City {name: j.city})
WITH j, c
MERGE (j)-[:in]->(c)
SET j.merged = 1
return count(j)
Run Code Online (Sandbox Code Playgroud)

(现在不知道过滤掉已经匹配的好方法,所以试着用自定义"merged"属性标记它,我已经有了索引)

neo4j graph-databases cypher

7
推荐指数
1
解决办法
1311
查看次数

Neo4j:如何通过cypher删除数据库中的所有重复关系?

我有一个庞大的数据库,有大量节点(10mil +).整个数据库中只有一种关系.但是,有大量节点在它们之间存在重复关系.我目前所拥有的是这个cypher脚本,它找到所有带有重复项的对,然后是一个运行并清理每个对的python脚本(在这些节点之间只留下一个唯一的关系).

match (a)-[r]->(b) with a,b, count(*) as c where c>1 return a.pageid, b.pageid, c LIMIT 100000;

这对于一个小型数据库来说效果相当不错,但是当我在一个大型数据库上运行它时,它最终会因为堆上的内存耗尽而异常爆炸(越来越多的盒子没有帮助).

所以,问题是2倍:1)是否有任何类型的索引我可以建立关系(现在没有),这将有助于加快这一点?2)是否存在能够(以快速方式......或至少可靠地)删除数据库中所有重复关系的密码查询,为每个节点对(已经存在它们之间的关系)留下一个唯一的关系?

PS我在ubuntu(12something)AWS盒子上运行neo4j 2.0.1.

PPS我意识到有这样的答案:stackoverflow,然而他所要求的是更具体的东西(针对2个已知的节点),并且完整数据库覆盖的答案不再运行(语法改变?)

提前致谢!

python database neo4j

6
推荐指数
1
解决办法
2212
查看次数

Neo4J数据库大小/缩小

我们有一个Neo4j数据库,其中包含约1000万个节点和约3亿个关系。数据库已增长到约80 Gig。日常工作会杀死旧数据并添加新数据,因此大约数量的节点和关系保持相当恒定。但是,数据库文件的物理文件大小一直在增长(例如,关系存储文件当前为50Gig)。

我发现以下链接可以解释为什么删除时大小可能不会减小(保留空间并由新的关系和节点占用空间),但是它仍然不能解释为什么我们的数据库不断增长! 删除数百万个节点后的neostore。*文件大小

问题:

a)我们可以检查什么来找出为什么数据库仍在增长?

b)我使用过的大多数关系数据库始终具有“缩小文件”或“优化可用空间”功能。Neo4j是否存在类似的东西?(Google搜索失败!)。

谢谢,

-一种

PS我们在Ubuntu 14上运行Neo4j 2.1.5 Community Edition

database optimization ubuntu neo4j graph-databases

5
推荐指数
1
解决办法
1216
查看次数