neo4j 如何在python中使用match函数,当目标匹配的“属性”是一个列表时?

pjngdqdw  于 2022-11-05  发布在  Python
关注(0)|答案(1)|浏览(147)

我在Neo4j中创建了一个节点,节点名为robot,robot有一个属性,名为“capabilities”。对于capabilities,有一个robot所有功能的列表。例如,下图中的robot有一个功能列表,[Moving,ForceApplying]。

现在我想在Py2neo中使用matcher.match命令来搜索具有特定功能的机器人节点。如果我搜索的功能是Moving。那么我如何编写代码呢?下面是我编写的代码,但不起作用。

from py2neo import Graph, Node, Relationship, NodeMatcher

graph = Graph('bolt://localhost:7687', auth=("neo4j", "neo4j"))
matcher = NodeMatcher(graph)     
a = matcher.match('Robot', capabilities = 'Moving').first()

lsmepo6l

lsmepo6l1#

nodematcher在属性中搜索完全相同的值,而first()子句返回结果中的第一条记录。它没有查看属性'capabilities'的第一个条目。
你可以在这里阅读更多关于它是如何工作的(书呆子警告!):

https://py2neo.org/v4/_modules/py2neo/matching.html

我就是这么做的。

from py2neo import Graph, NodeMatcher
 graph = Graph("bolt://localhost:7687", user="neo4j", password="neo4j")
 matcher = NodeMatcher(graph)
 list(matcher.match("Robot").where("'Moving' in _.capabilities"))

Result:
     [(_489:Robot {capabilities: ['Moving', 'ForceApplying'], name: 'Application_Kuka'})]

相关问题