Neo4j:如何根据连接的节点数返回查询结果?
我有以下模式:Neo4j:如何根据连接的节点数返回查询结果?,neo4j,Neo4j,我有以下模式: (:Thread) (:User) (User)->[:PART_OF_THREAD] 当前,所有线程都将有一个额外的(:User)节点连接到它,该节点表示一个bot(执行自动消息等)。下面是每个线程的数据示例(2个用户+1个用户) 我在尝试查询User2和BotUser线程时遇到问题。由于BotUser存在于每个线程中,如果我查询User2和BotUser之间的线程,那么neo4j将返回其中包含User2和BotUser的所有线程,这不是我想要的,我只想返回带有BotU
(:Thread)
(:User)
(User)->[:PART_OF_THREAD]
当前,所有线程都将有一个额外的(:User)
节点连接到它,该节点表示一个bot(执行自动消息等)。下面是每个线程的数据示例(2个用户+1个用户)
我在尝试查询User2
和BotUser
线程时遇到问题。由于BotUser
存在于每个线程中,如果我查询User2和BotUser之间的线程,那么neo4j将返回其中包含User2和BotUser的所有线程,这不是我想要的,我只想返回带有BotUser
和User2
的线程。以下是我当前使用的查询:
MATCH (user1:USER {id: User1Id}) -[:PART_OF_THREAD]->(thread:THREAD)<-[:PART_OF_THREAD]-(:USER {id: BotUserId})
RETURN thread
MATCH(user1:USER{id:User1Id})-[:部分线程]->(线程:线程)2
还有什么我能做的吗
如果有什么不清楚的地方,请随便问一些问题您的逻辑是正确的,计算线程中的用户数的最快方法是获取线程上的部分关系的程度:
MATCH (user1:USER {id: User1Id}) -[:PART_OF_THREAD]->(thread:THREAD)<-[:PART_OF_THREAD]-(:USER {id: BotUserId})
WHERE size((thread)<-[:PART_OF_THREAD]-()) = 2
RETURN thread
MATCH(user1:USER{id:User1Id})-[:部分线程]->(线程:线程)
MATCH (user1:USER {id: User1Id}) -[:PART_OF_THREAD]->(thread:THREAD)<-[:PART_OF_THREAD]-(:USER {id: BotUserId})
RETURN thread
MATCH (user1:USER {id: User1Id}) -[:PART_OF_THREAD]->(thread:THREAD)<-[:PART_OF_THREAD]-(:USER {id: BotUserId})
WHERE size((thread)<-[:PART_OF_THREAD]-()) = 2
RETURN thread