我可以过滤 Neo4 模型中的半结构化节点吗?

问题描述

我将 Neomodel Python 包与 Neo4j 数据库一起使用,我很喜欢它。我目前正在使用 filter() 方法,但每次我对 SemiStructurednode 中未定义的属性使用 filter() 方法时,都会出现错误

在下面的示例中,我的 Person SemiStructurednode 仅将姓氏作为属性,但数据库中的某些节点可能也有 eye_colour,我想以此进行过滤。请注意,并非所有节点都有眼睛颜色。

class Person(SemiStructurednode):
    surname = Stringproperty()

Person.nodes.filter(surname__contains='atts',eye_colour='BLUE')

对我来说,上面的代码应该可以工作,但出现 ValueError: No such property eye_colour on Person 错误。但是,如果我更改我的类定义以包含 eye_colour 作为 StringProperty 一切都很好。但是,我不想这样做,因为我想使用其他各种动态过滤器,因为导入系统的数据不同。

Neomodel 是否支持我正在尝试做的事情,或者我是否必须构建一个 Cypher 查询,或者有人可以看到我做错了什么?

解决方法

在处理此类异常时,您应该始终使用 try 和 except 子句。

try:
    Person.nodes.filter(surname__contains='atts',eye_colour='BLUE')
except:
    print ("Couldn't filter surname and eye_colour")