我正在尝试使用以下语法在cypher中创建索引节点:
neo4j-sh (?)$ start m=node:person(UID= "1") return m;
==> +------------+
==> | m |
==> +------------+
==> | Node[64]{} |
==> +------------+
==> 1 row
==> 0 ms
==>
neo4j-sh (?)$ start n = node(64) return n.UID;
==> EntityNotFoundException: The property 'UID' does not exist on Node[64]
为什么节点似乎是创建的,但是我正在创建的属性,似乎已成功返回,不存在?
有更简单的方法吗?我以前使用py2neo的功能:
neo4j.GraphDatabaseService("http://localhost:7474/db/data/").get_or_create_indexed_node(index='person', key='UID', value=self.id, properties={'UID' : self.id})
但这似乎已经被弃用了 - 它不再适用于最新版本的py2neo,它似乎不再支持properties
参数(对于未来的人,index
被替换为index_name
)。
答案 0 :(得分:2)
索引和属性是两回事。
您的图表中似乎有一个名为person
的索引和键/值对UID:“1”的节点。您的第一个查询通过其索引获取您的节点。但索引不是节点的属性。您可以启动webadmin以可视化图表中索引的管理方式。
据我所知,文档中没有关于如何使用cypher创建索引的内容,但您可以轻松使用REST API来操作它们(link)。
答案 1 :(得分:1)
该方法尚未弃用,properties
参数仍然有效,如前所述。正如您所确定的,唯一的变化是第一个参数从index
到index_name
的变化。
文档在这里:
请注意,properties
仅在节点尚不存在时才会被实际使用,即在执行'create'时,而不是在执行'get'时。否则,现有节点将保持原样。