我的密码查询有问题。
情况说明: 用户可以连接到其他CONTACT节点,但他也可以连接到EVENT节点。其他用户也可以连接到这些事件节点。我们希望检索连接到的节点(CONTACT&EVENT),但我们还需要检索连接到的CONTACT节点的事件节点。
这是我们从底部中心的CONTACT节点检索连接的节点时想要看到的图形:
但是我们收到以下json输出:
{
"_type": "Node",
"_id": 1,
"nodeType": "EVENT",
"nodeId": 1,
"connected_with": [
{
"_type": "Node",
"_id": 0,
"nodeType": "CONTACT",
"nodeId": 1
},
{
"_type": "Node",
"_id": 2,
"nodeType": "CONTACT",
"nodeId": 2,
"connected_with": [
{
"_type": "Node",
"_id": 0,
"nodeType": "CONTACT",
"nodeId": 1
}
]
}
]
}
我们想深入2个级别,这意味着我们希望看到 我们连接到的联系人,但同时也联系我们 “碰到”事件,因此我们要深入2个级别的原因。
我们目前正在运行此密码查询,但是如前所述,它不起作用。
MATCH path = (n:Node {nodeId: 1})<-[:CONNECTED_WITH*]-(nodes)
WITH collect(path) as paths
CALL apoc.convert.toTree(paths) yield value as json
RETURN json
任何帮助将不胜感激!
答案 0 :(得分:0)
您的结果似乎与您想要的内容相符,只是它是树状(您要求的形式)。
您声明您没有“看到”您的期望(大概是在neo4j浏览器中)。这是因为您要求的结果不是简单的节点,关系和/或路径。
相反,请尝试执行此操作(还请注意2
的可变长度路径模式深度的上限):
MATCH path = (n:Node {nodeId: 1})<-[:CONNECTED_WITH*..2]-(nodes)
RETURN path
在旁边:仅具有单个节点标签Node
并具有nodeType
属性,该属性指定节点的确切“类型”通常不是对事物建模的正确方法。它使理解数据库变得更加困难,趋于使您的代码复杂化,并且使利用索引的难度变得更大。您可能希望有单独的标签(例如Person
和Event
)。您可能还希望具有不同的关系类型。