0

我需要在一组节点之间创建边,但不能保证边不存在,我需要知道已创建哪些边,以便我可以增加两个连接节点的边计数器。
(我想知道每个节点的边数,而不是每次都查询图形)
示例:

MERGE (u:user {id:999049043279872})
MERGE (g1:group {id:346709075951616})
MERGE (g2:group {id:346709075951617})
MERGE (g1)-[m1:member]->(u)
MERGE (g2)-[m2:member]->(u)

有时用户已经是组的成员,所以在这种情况下我不想增加计数器。
我尝试使用结果统计信息,但它仅返回创建的关系编号,我还考虑使用地图,然后使用ON CREATE SETafter填充内容MERGE

WITH {g1:0, g2:0} as res
MERGE (u:user {id:999049043279872})
MERGE (g1:group {id:346709075951616})
MERGE (g2:group {id:346709075951617})
MERGE (g1)-[m1:member]->(u)
ON CREATE SET res.g1 = 1
MERGE (g2)-[m2:member]->(u)
ON CREATE SET res.g2 = 1
RETURN res

但它不起作用;服务器在执行查询后立即崩溃。
例外:

------ FAST MEMORY TEST ------
17235:M 28 Feb 2022 16:56:50.016 # main thread terminated
17235:M 28 Feb 2022 16:56:50.017 # Bio thread for job type #0 
terminated
17235:M 28 Feb 2022 16:56:50.017 # Bio thread for job type #1 
terminated
17235:M 28 Feb 2022 16:56:50.018 # Bio thread for job type #2 
terminated

Fast memory test PASSED, however your memory can still be broken. 
Please run a memory test for several hours if possible.

------ DUMPING CODE AROUND EIP ------
Symbol: (null) (base: (nil))
Module: /lib/x86_64-linux-gnu/libc.so.6 (base 0x7fbfe3dcc000)
$ xxd -r -p /tmp/dump.hex /tmp/dump.bin
$ objdump --adjust-vma=(nil) -D -b binary -m i386:x86-64 
/tmp/dump.bin
------

=== REDIS BUG REPORT END. Make sure to include from START to END. 
=== 

   Please report the crash by opening an issue on github:

       http://github.com/redis/redis/issues

Suspect RAM error? Use redis-server --test-memory to verify it.

Segmentation fault

有任何想法吗 ?
提前致谢

4

1 回答 1

0

Neo4j 已经在每个节点内存储了一个计数器来计算关系的数量并提供快速的计数访问。当您想获取组中的成员数时,您可以简单地执行以下操作:

MATCH (g:group)
return size((g)<-[:member]-())
于 2022-03-03T15:33:31.163 回答