Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j:如何根据连接的节点数返回查询结果?_Neo4j - Fatal编程技术网

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