我有许多不同类型的节点,我的意思是节点上有不同的属性。例如,我有许多节点,它们只有一个 fileName 和 uploadDate 的属性。如果我想检查所有文件名,我只需要做
START n=node(*) WHERE has(n.File) RETURN n;
这是最佳实践吗(即查询扁平化的数据库)。谢谢!
我有许多不同类型的节点,我的意思是节点上有不同的属性。例如,我有许多节点,它们只有一个 fileName 和 uploadDate 的属性。如果我想检查所有文件名,我只需要做
START n=node(*) WHERE has(n.File) RETURN n;
这是最佳实践吗(即查询扁平化的数据库)。谢谢!
您的查询会扫描所有节点,随着数据集的增长,这将变得更慢。
为了识别某种类型的节点,有两种常见的方法:
使用描述您的类型的值设置一个名为“type”的属性(或“_type_”fe,如果您想将其标记为系统属性),例如“文件”。
然后你可以通过这样的索引查找节点:
start n=node:node_auto_index(type='File') return n;
将某种类型的节点连接到“类型”节点并查询关系:
start type_node=node:node_auto_index(name='File')
match type_node<-[:IS_A]-file
return file;
(此页面http://www.neo4j.org/learn/try上的啤酒图就是一个例子。)