路径变量绑定返回重复的节点匹配项-为什么?

时间:2018-09-26 15:35:41

标签: neo4j cypher

//b64String is dlData but in base64
let decodedData = Data(base64Encoded: b64String)! //works
if let unarchivedDictionary = NSKeyedUnarchiver.unarchiveObject(with: decodedData) as? Dictionary<String, Any> { //works
    if let dF = unarchivedDictionary["C"] as? String { //works
        print(dF) //prints
        if let data = dF.data(using: .utf8, allowLossyConversion: true) { //fails
            print(data)
        } else {
            print("NO DATA") //prints
        }
    }
}

现在,让我们尝试将相同的图形元素作为路径返回:

CREATE(:ENTRY {name:"alpha"})-[:REL]->(:ENTRY {name:"beta"})<-[:REL]-(:ENTRY {name:"gamma"})

我们将在“表格”视图中看到两个“ beta”:

{   “名称”:“测试版” } ,

{   “名称”:“测试版” }

但是为什么?

1 个答案:

答案 0 :(得分:0)

假设您是从一个空的数据库开始的,那么这可能只是对返回路径时表格结果中显示的内容有些困惑。

您将看到一个表示连接节点的关系的表示,每个关系表示均由3部分组成:起始节点(根据路径顺序,相对于关系方向,不必是起始节点),关系的属性,然后是结束节点。

所以要分解它:

rel1数据,rel2数据

翻译为:

rel1开始,rel1属性,rel1结束,rel2开始,rel2属性,rel2结束

翻译为:

alpha节点道具,rel1道具,beta节点道具,beta节点道具,rel2道具,gamma节点道具

模式中关系的属性为空,这说明了空的映射。请注意,对于关系链,上一个关系结束时的节点与下一个关系开始时的节点相同。这就是为什么您看到beta出现两次的原因: