我让用户连接到聊天节点,就像这样
(u: User)-[:MEMBER_OF]->(c:Chat)
我需要避免使用相同成员进行多次聊天。 因此,当有人创建群聊时,我会检查是否已经与相同的成员聊天。
最接近的解决方案是
MATCH (member)-[m:MEMBER_OF]->(c:Chat)
WHERE member.id IN {members}
WITH c.chatId as chatId, count(DISTINCT m) as nbR
WHERE nbR = {nbMembers}
RETURN chatId
成员[122,233,33]和nbMembers members.size = 3
此解决方案找到与3个成员(但不是所有成员)连接的所有聊天记录,它找不到与3个成员连接的聊天。
我也找不到ALL或FILTER的方式。
答案 0 :(得分:1)
这个怎么样?
MATCH (member)-[m:MEMBER_OF]->(c:Chat)
WITH c, member
ORDER BY member.id
WITH c, collect(member.id) AS member_ids
WHERE member_ids = {nbMembers}
RETURN c.chatId
此外,您应该在nbMembers传递给查询之前对其进行排序